📄 xmerl.hrl
字号:
%%% 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.13%%%%%% 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):%%% <michael.remond@IDEALX.com>: suggested #xmlDocument{}%%%%%%----------------------------------------------------------------------%%% #0. BASIC INFORMATION%%%----------------------------------------------------------------------%%% File: xmerl.hrl%%% Author : Ulf Wiger <ulf.wiger@ericsson.com>%%% Date : 00-09-22%%% Description : Record and macro definitions for xmerl%%%----------------------------------------------------------------------%% records generated by the scanner%% --------------------------------%% XML declaration-record(xmlDecl,{ vsn, % string() XML version encoding, % string() Character encoding standalone, % (yes | no) attributes % [#xmlAttribute()] Other attributes than above }).%% Attribute-record(xmlAttribute,{ name, % atom() expanded_name=[],% atom() | {string(),atom()} nsinfo = [], % {Prefix, Local} | [] namespace = [], % inherits the element's namespace parents = [], % [{atom(),integer()}] pos, % integer() language = [], % inherits the element's language value, % IOlist() | atom() | integer() normalized % atom() one of (true | false) }).%% namespace record-record(xmlNamespace,{ default = [], nodes = [] }).%% namespace node - i.e. a {Prefix, URI} pair%% TODO: these are not currently used?? /RC-record(xmlNsNode,{ prefix, uri = [] }).%% XML Element%% content = [#xmlElement()|#xmlText()|#xmlPI()|#xmlComment()|#xmlDecl()]-record(xmlElement,{ name, % atom() expanded_name = [], % string() | {URI,Local} | {"xmlns",Local} nsinfo = [], % {Prefix, Local} | [] namespace=#xmlNamespace{}, parents = [], % [{atom(),integer()}] pos, % integer() attributes = [], % [#xmlAttribute()] content = [], language = "", % string() xmlbase="", % string() XML Base path, for relative URI:s elementdef=undeclared % atom(), one of [undeclared | prolog | external | element] }).%% plain text%% IOlist = [char() | binary () | IOlist]-record(xmlText,{ parents = [], % [{atom(),integer()}] pos, % integer() language = [],% inherits the element's language value, % IOlist() type = text % atom() one of (text|cdata) }).%% plain text-record(xmlComment,{ parents = [], % [{atom(),integer()}] pos, % integer() language = [], % inherits the element's language value % IOlist() }).%% processing instruction-record(xmlPI,{ name, % atom() pos, % integer() value % IOlist() }).-record(xmlDocument,{ content }).%% XPATH (xmerl_xpath, xmerl_pred_funcs) records-record(xmlContext, { axis_type = forward, context_node, context_position = 1, nodeset = [], bindings = [], functions = [], namespace = [], whole_document }).-record(xmlNode, { type = element, node, parents = [], pos = 1 }).-record(xmlObj, { type, value }).-record(xmerl_fun_states, {event, hook, rules, fetch, cont}).%% scanner state record-record(xmerl_scanner,{ encoding=undefined, % undefined | string() Character set used, default is UTF-8 standalone = no,% prolog =continue, environment = prolog, % atom(), (prolog | element) declarations = [], % [{Name, Attrs}] doctype_name, doctype_DTD = internal, % internal | DTDId rules, keep_rules = false, % delete (ets) tab if false namespace_conformant = false, % true | false xmlbase, % string() Current Base path, for relative URI:s xmlbase_cache, % string() Cached Base path fetch_path=[], % [string()] List with additional, user % defined, paths filename=file_name_unknown, validation = off, %% off (default) | dtd | schema (true, false are obsolete) schemaLocation = [], space = preserve, event_fun, hook_fun, acc_fun, fetch_fun, close_fun, continuation_fun, rules_read_fun, rules_write_fun, rules_delete_fun, user_state, fun_states = #xmerl_fun_states{}, entity_references=[], text_decl=false, quiet=false, % bool() Set to true will print no error messages col = 1, line = 1 }).%% scanner events%% event : start | end-record(xmerl_event, { event, line, col, pos, data }).%% useful scanner macros%% ---------------------% -define(debug,1).-ifdef(debug).-define(dbg(Fmt, Args), ok=io:format("~p: " ++ Fmt, [?LINE|Args])).-define(DBG, ok=io:format("<<~p:~p>>~n", [?MODULE, ?LINE])).-else.-define(dbg(Fmt, Args), no_debug).-define(DBG, no_debug).-endif.-define(space, 32).-define(cr, 13).-define(lf, 10).-define(tab, 9).%% whitespace consists of 'space', 'carriage return', 'line feed' or 'tab'-define(whitespace(H), H==?space ; H==?cr ; H==?lf ; H==?tab).%% non-caharacters according to Unicode: 16#ffff and 16#fffe-define(non_character(H1,H2), H1==16#ff,H2==16#fe;H1==16#ff,H2==16#ff).-define(non_ascii(H), list(H),hd(H)>=128;integer(H),H>=128).-define(strip1, {_, T1, S1} = strip(T, S)).-define(strip2, {_, T2, S2} = strip(T1, S1)).-define(strip3, {_, T3, S3} = strip(T2, S2)).-define(strip4, {_, T4, S4} = strip(T3, S3)).-define(strip5, {_, T5, S5} = strip(T4, S4)).-define(strip6, {_, T6, S6} = strip(T5, S5)).-define(strip7, {_, T7, S7} = strip(T6, S6)).-define(strip8, {_, T8, S8} = strip(T7, S7)).-define(strip9, {_, T9, S9} = strip(T8, S8)).-define(strip10, {_, T10, S10} = strip(T9, S9)).-define(condstrip1, {_, T1, S1} = condstrip(T, S, false)).-define(condstrip2, {_, T2, S2} = condstrip(T1,S1,false)).-define(condstrip3, {_, T3, S3} = condstrip(T2,S2,false)).-define(condstrip4, {_, T4, S4} = condstrip(T3,S3,false)).-define(bump_col(N), ?dbg("bump_col(~p), US = ~p~n", [N, S0#xmerl_scanner.user_state]), S = S0#xmerl_scanner{col = S0#xmerl_scanner.col + N}).
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -