Criar arquivo XML pelo PROLOG

0 respostas
H

Olá pessoal.

Preciso fazer um trabalho na facul onde gero um arquivo pelo Prolog e devo ler esse arquivo utilizando Java, criando uma interface para mostrar o resultado e tals.
Até aí tudo bem, só que o código base em prolog que a Prof. passou é esse:

pai_de(joao,ana).
pai_de(joao,joaquim).
pai_de(joao,vitor).
pai_de(joaquim,pedro).
pai_de(pedro,luiza).
pai_de(pedro,carla).
pai_de(pedro,julia).
irmao_de(X,Y) :- pai_de(Z,X), pai_de(Z,Y), X \= Y.
		
cria(ARQ) :- irmao_de(ana,Y),
	tell(ARQ),
	write('<PARENTE>'), nl,
	write(' <PESSOA>'), write('ana'), write('</PESSOA>'), nl,
	write(' <IRMAO>'), write(Y), write('</IRMAO>'), nl,
	write('</PARENTE>'), nl,
	flush,
	tell(user).

Minha idéia é gerar o arquivo no formato XML, que torna bem mais fácil a leitura dele pelo java. Ele cria o arquivo tranquilo, porém, como vocês podem ver o XML precisa de um nó raiz que não seja repetido e no exemplo acima, a tag "" vai se repetir de acordo com a quantidade de resultados que o prolog tiver.

O resultado fica assim:
<PARENTE>
 <PESSOA> ana</PESSOA>
 <IRMAO> joaquim</IRMAO>
</PARENTE>
<PARENTE>
 <PESSOA> ana</PESSOA>
 <IRMAO>  pedro</IRMAO>
</PARENTE>
<PARENTE>
 <PESSOA> ana</PESSOA>
 <IRMAO>  vitor</IRMAO>
</PARENTE>

O problema é, como gerar esse nó principal no Prolog?

tentei fazer assim:
cria(ARQ) :- 
	tell(ARQ),
        write('<NoPrincipal>'),  
        irmao_de(ana,Y),
	write('<PARENTE>'), nl,
	write(' <PESSOA>'), write('ana'), write('</PESSOA>'), nl,
	write(' <IRMAO>'), write(Y), write('</IRMAO>'), nl,
	write('</PARENTE>'), nl,
        write('</NoPrincipal>'),
	flush,        
	tell(user).
[/code]

Porém não funciona, ele coloca "" ao final de cada busca. Se eu coloco esse mesmo trecho após o Flush, também não funciona.
Qqr sugestão fico grato.

Estou usando o Amzi! Prolog como Compilador.

Criado 11 de maio de 2010
Respostas 0
Participantes 1