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.