1module m_sax_types 2 3#ifndef DUMMYLIB 4 use m_common_attrs, only: dictionary_t 5 use m_common_elstack, only: elstack_t 6 use m_common_entities, only: entity_list 7 use m_common_error, only: error_stack 8 use m_common_namespaces, only: namespacedictionary 9 use m_common_notations, only: notation_list 10 use m_common_struct, only: xml_doc_state 11 12 use fox_m_fsys_varstr, only: varstr 13 14 use m_sax_reader, only: file_buffer_t 15 16 implicit none 17 18 ! Context 19 20 integer, parameter :: CTXT_NULL = -1 21 integer, parameter :: CTXT_INIT = 0 22 integer, parameter :: CTXT_BEFORE_DTD = 1 23 integer, parameter :: CTXT_IN_DTD = 2 24 integer, parameter :: CTXT_IGNORE = 3 25 integer, parameter :: CTXT_BEFORE_CONTENT = 4 26 integer, parameter :: CTXT_IN_CONTENT = 5 27 integer, parameter :: CTXT_AFTER_CONTENT = 6 28 29 ! State 30 31 integer, parameter :: ST_STOP = -1 32 integer, parameter :: ST_NULL = 0 33 integer, parameter :: ST_MISC = 1 34 integer, parameter :: ST_BANG_TAG = 2 35 integer, parameter :: ST_START_PI = 3 36 integer, parameter :: ST_PI_CONTENTS = 4 37 integer, parameter :: ST_PI_END = 5 38 integer, parameter :: ST_START_COMMENT = 6 39 integer, parameter :: ST_COMMENT_END = 7 40 integer, parameter :: ST_START_TAG = 8 41 integer, parameter :: ST_START_CDATA_DECLARATION = 9 42 integer, parameter :: ST_FINISH_CDATA_DECLARATION = 10 43 integer, parameter :: ST_IN_TAG = 11 44 integer, parameter :: ST_ATT_NAME = 12 45 integer, parameter :: ST_ATT_EQUALS = 13 46 integer, parameter :: ST_CHAR_IN_CONTENT = 14 47 integer, parameter :: ST_CLOSING_TAG = 15 48 integer, parameter :: ST_CDATA_CONTENTS = 16 49 integer, parameter :: ST_IN_CLOSING_TAG = 17 50 integer, parameter :: ST_TAG_IN_CONTENT = 18 51 integer, parameter :: ST_CDATA_END = 19 52 integer, parameter :: ST_IN_DOCTYPE = 20 53 integer, parameter :: ST_DOC_NAME = 21 54 integer, parameter :: ST_DOC_SYSTEM = 22 55 integer, parameter :: ST_DOC_PUBLIC = 23 56 integer, parameter :: ST_DOC_DECL = 24 57 integer, parameter :: ST_CLOSE_DOCTYPE = 25 58 integer, parameter :: ST_START_ENTITY = 26 59 integer, parameter :: ST_START_PE = 27 60 integer, parameter :: ST_IN_SUBSET = 28 61 62! DTD states 63 integer, parameter :: ST_DTD_NULL = 50 64 integer, parameter :: ST_DTD_SUBSET = 51 65 integer, parameter :: ST_DTD_START_SECTION_DECL = 52 66 integer, parameter :: ST_DTD_FINISH_SECTION_DECL = 53 67 integer, parameter :: ST_DTD_IN_IGNORE_SECTION = 54 68 integer, parameter :: ST_DTD_BANG_TAG = 55 69 integer, parameter :: ST_DTD_START_PI = 56 70 integer, parameter :: ST_DTD_PI_CONTENTS = 57 71 integer, parameter :: ST_DTD_PI_END = 58 72 integer, parameter :: ST_DTD_COMMENT_END = 59 73 integer, parameter :: ST_DTD_START_COMMENT = 60 74 integer, parameter :: ST_DTD_ATTLIST = 61 75 integer, parameter :: ST_DTD_ELEMENT = 62 76 integer, parameter :: ST_DTD_ENTITY = 63 77 integer, parameter :: ST_DTD_NOTATION = 64 78 integer, parameter :: ST_DTD_NOTATION_ID = 65 79 integer, parameter :: ST_DTD_NOTATION_SYSTEM = 66 80 integer, parameter :: ST_DTD_NOTATION_PUBLIC = 67 81 integer, parameter :: ST_DTD_NOTATION_PUBLIC_2 = 68 82 integer, parameter :: ST_DTD_NOTATION_END = 69 83 integer, parameter :: ST_DTD_ENTITY_PE = 70 84 integer, parameter :: ST_DTD_ENTITY_ID = 71 85 integer, parameter :: ST_DTD_ENTITY_PUBLIC = 72 86 integer, parameter :: ST_DTD_ENTITY_SYSTEM = 73 87 integer, parameter :: ST_DTD_ENTITY_NDATA = 74 88 integer, parameter :: ST_DTD_ENTITY_NDATA_VALUE = 75 89 integer, parameter :: ST_DTD_ENTITY_END = 76 90 integer, parameter :: ST_DTD_ATTLIST_CONTENTS = 77 91 integer, parameter :: ST_DTD_ATTLIST_END = 78 92 integer, parameter :: ST_DTD_ELEMENT_CONTENTS = 79 93 integer, parameter :: ST_DTD_ELEMENT_END = 80 94 integer, parameter :: ST_DTD_DONE = 81 95 96! token types 97 98 integer, parameter :: TOK_NULL = 0 99 integer, parameter :: TOK_PI_TAG = 1 ! <? 100 integer, parameter :: TOK_BANG_TAG = 2 ! <! 101 integer, parameter :: TOK_OPEN_TAG = 3 ! < 102 integer, parameter :: TOK_OPEN_SB = 4 ! [ 103 integer, parameter :: TOK_CLOSE_SB = 5 ! [ 104 integer, parameter :: TOK_OPEN_COMMENT = 6 ! -- 105 integer, parameter :: TOK_NAME = 7 ! name (+token) 106 integer, parameter :: TOK_CHAR = 8 ! character data (+token) 107 integer, parameter :: TOK_PI_END = 9 ! ?> 108 integer, parameter :: TOK_COMMENT_END = 10 ! --> 109 integer, parameter :: TOK_SECTION_START = 11 ! <![ 110 integer, parameter :: TOK_SECTION_END = 12 ! ]]> 111 integer, parameter :: TOK_END_TAG = 13 ! > 112 integer, parameter :: TOK_END_TAG_CLOSE = 14 ! /> 113 integer, parameter :: TOK_CLOSE_TAG = 15 ! </ 114 integer, parameter :: TOK_ENTITY = 16 ! % or & 115 integer, parameter :: TOK_EQUALS = 17 ! = 116 integer, parameter :: TOK_DTD_CONTENTS = 18 ! for element and attlist 117 integer, parameter :: TOK_OPEN_PAR = 19 ! ( 118 integer, parameter :: TOK_CLOSE_PAR = 20 ! ) 119 120 type sax_parser_t 121 type(xml_doc_state), pointer :: xds 122 logical :: xds_used = .false. ! is the xds used by DOM? If so, we must 123 ! not destroy it once we are finished 124 integer :: context 125 integer :: state = ST_NULL 126 integer :: state_dtd = ST_DTD_SUBSET 127 logical :: well_formed = .false. 128 logical :: skippedExternal = .false. 129 type(varstr) :: token 130 type(varstr) :: content 131 integer :: tokenType = TOK_NULL 132 integer :: nextTokenType = TOK_NULL 133 type(varstr) :: name 134 type(varstr) :: attname 135 logical :: error = .false. 136 type(error_stack) :: error_stack 137 ! Aspects of document structure 138 type(varstr) :: root_element 139 type(elstack_t) :: elstack 140 type(dictionary_t) :: attributes 141 type(namespacedictionary) :: nsdict 142 type(notation_list) :: nlist 143 type(entity_list) :: predefined_e_list 144 type(entity_list) :: forbidden_pe_list 145 type(entity_list) :: forbidden_ge_list 146 type(varstr) :: PublicId 147 type(varstr) :: SystemId 148 type(varstr) :: Ndata 149 logical :: inIntSubset = .false. 150 logical :: spaceBeforeEntity = .false. 151 end type sax_parser_t 152#endif 153 154 type xml_t 155#ifndef DUMMYLIB 156 type(file_buffer_t) :: fb 157 type(sax_parser_t) :: fx 158#else 159 integer :: i = 0 160#endif 161 end type xml_t 162 163end module m_sax_types 164