%:- auto_table.

:- export
	tag/3,
	tagbag/3,
	strip_nodes/2,
	text/2,
	annotations/2.
/*	'GateDocument'/2,
	'GateDocumentFeatures'/2,
	'TextWithNodes'/2.*/

:- import
	load_xml_structure/3 from sgml.

annotations(FileName, Annotations) :-
	tagbag('Annotation', FileName, Annotations).

tagbag(Tag, FileName, Bag) :-
	load_xml_structure(file(FileName), A, _),
	bagof(X, tag(Tag, A, X), Bag).

text(FileName, StrippedNodeText) :-
	atom(FileName),
	load_xml_structure(file(FileName), A, _),
	tag('TextWithNodes', A, NodeText),
	strip_nodes(NodeText, StrippedNodeText).

tag(Tag, element(Tag,Attributes,Content), element(Tag,Attributes,Content)).

tag(Tag, element(_,_,Inside), Answer) :-
	tag(Tag, Inside, Answer).

tag(Tag, [Head|Tail], Answer) :-
	tag(Tag, Head, Answer);
	tag(Tag, Tail, Answer).

strip_nodes(element('TextWithNodes',_,List), Output) :-
	strip_nodes(List, Output).

strip_nodes([], []).

strip_nodes([element('Node',[id = Integer],_)|TailNode], [node(Integer)|TailOut]) :-
	strip_nodes(TailNode, TailOut), !. %never treat node as word

strip_nodes([Word|TailNode], [Word|TailOut]) :-
	strip_nodes(TailNode, TailOut).

/*'GateDocument'(element('GateDocument',B,C), element('GateDocument',B,C)).

'GateDocument'(element(_,_,X), Y) :-
	'GateDocument'(X, Y).

'GateDocument'([H|T], X) :-
	'GateDocument'(H, X);
	'GateDocument'(T, X).

'GateDocumentFeatures'(element('GateDocumentFeatures',B,C), element('GateDocumentFeatures',B,C)).

'GateDocumentFeatures'(element(_,_,X), Y) :-
	'GateDocumentFeatures'(X, Y).

'GateDocumentFeatures'([H|T], X) :-
	'GateDocumentFeatures'(H, X);
	'GateDocumentFeatures'(T, X).

'TextWithNodes'(element('TextWithNodes',B,C), element('TextWithNodes',B,C)).

'TextWithNodes'(element(_,_,X), Y) :-
	'TextWithNodes'(X, Y).

'TextWithNodes'([H|T], X) :-
	'TextWithNodes'(H, X);
	'TextWithNodes'(T, X).*/

