Zadanie domowe nr 2

Wyszukiwanie tłumaczeń

Zadanie 1 polegało na zaprojektowaniu struktury dla dokumentów zawierających tłumaczenia i dyskusje nad tłumaczeniami. Zadanie drugie to wyszukiwanie danych w takich dokumentach.

Napisz program, który wywołuje się z jednym parametrem - nazwą pliku z tłumaczeniami. Program ma odczytać na wejściu listę słów do przetłumaczenia i w pliku z tłumaczeniami znaleźć tłumaczenia dla każdego z tych słów. Tłumaczenia są wypisywane w postaci dokumentu XML.

Program na wejściu czyta listę słów do tłumaczenia jako dokument XML o następującej strukturze:

<!ELEMENT lista_slow (slowo*)>
<!ELEMENT slowo (autor*, dyskutant*)>
<!ATTLIST slowo slowo CDATA #REQUIRED>
<!ELEMENT autor (#PCDATA)>
<!ELEMENT dyskutant (#PCDATA)>

Wyszukiwanie można dodatkowo sparametryzować za pomocą elementów autor i dyskutant zawierających ID osoby. Jeśli dla danego słowa są podane elementy autor, w wyniku mają zostać zawarte tylko propozycje tłumaczenia zgłoszone przez jednego z tych autorów. Jeśli dla danego słowa są podanę elementy dyskutant, w wyniku mają zostać zawarte tylko propozycje tłumaczenia, w dyskusji nad którymi zabrała głos przynajmniej jedna z wymienionych osób.

Dane o tłumaczeniach są zapisane w pliku o strukturze tlumacz.dtd.

Wynik wyszukiwania ma być zapisany jako dokument XML o nstępującej strukturze:

<!ELEMENT lista_wynikow (wynik*)>
<!ELEMENT wynik (tlumaczenie*)>
<!ATTLIST wynik slowo CDATA #REQUIRED>
<!ELEMENT tlumaczenie EMPTY>
<!ATTLIST tlumaczenie
	tekst CDATA #REQUIRED
	autor CDATA #IMPLIED>

Atrybut autor ma zawierać imię i nazwisko lub nick osoby, będącej autorem tłumaczenia. Jeśli dla podanego słowa nie ma tłumaczeń spełniających podane kryteria, w wyniku powinien pojawić się pusty element wynik.

Program powinien odczytywać dokument z tłumaczeniami używając interfejsu SAX. Dokument z parametrami wejściowymi i wynik mogą być parsowany i tworzony w dowolny sposób.