%%
%% %CopyrightBegin%
%%
%% Copyright Ericsson AB 2003-2009. 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%
%%
%%% Description : Wrapper to xmerl_scan, which reads an XML document
%%% from disk (alt. consumes a string), processes it, and
%%% exports is using the specified Callback module.
-module(xmerl_xlate).
-export([file/3,
string/3]).
-include("xmerl.hrl").
file(F, Title, Callback) ->
case file:read_file(F) of
{ok, Bin} ->
string(binary_to_list(Bin), Title, Callback);
Error ->
Error
end.
string(Str, Title, Callback) ->
xmerl_scan:string(Str, [{hook_fun, fun hook/2, {Title, Callback}}]).
hook(E = #xmlElement{parents = []}, S) ->
{Title, Callback} = xmerl_scan:hook_state(S),
Data = xmerl:export([E], Callback, [{title, Title}]),
{Data, S};
hook(X, S) ->
{X, S}.