Zgłaszanie | Wszystkie zgłoszenia | Najlepsze | Lista |
PTWPZ093 - PTwPZ KWIX |
Problem F: KWIX
Treść
Zgodnie z definicją w Wikipedii
XML (ang. Extensible Markup Language, w wolnym tłumaczeniu Rozszerzalny Język Znaczników) to uniwersalny język formalny przeznaczony do reprezentowania różnych danych w ustrukturalizowany sposób. XML jest niezależny od platformy, co umożliwia łatwą wymianę dokumentów pomiędzy różnymi systemami i znacząco przyczyniło się do popularności tego języka w dobie Internetu. XML jest podzbiorem języka SGML, tj. każdy dokument XML jest też dokumentem SGML. XML jest rekomendowany oraz specyfikowany przez organizację W3C.
XML jest jednym z najczęściej stosowanych formatów wymiany danych pomiędzy programami. Co prawda jego tekstowa postać daje też człowiekowi możliwość przeczytania takiego dokumentu, jednak jest to utrudnione przez brak odpowiedniego formatowania. Grupa studentów z Koła Naukowego Studentów Wydziału Informatyki Politechniki Białostockiej postanowiła coś na to poradzić i opracowała własny format o nazwie KWIX. Zasady przekształcania dokumentów z XML na KWIX są następujące:
- Nazwa każdego elementu jest wypisana w osobnej linii. Przed nazwą, w zależności od poziomu zagłębienia, wypisywane są znaki spacji (po 4 spacje na każdy poziom). Po nazwie występuje znak dwukropka.
- Jeżeli element posiada atrybuty, to każdy z nich jest wypisywany w osobnej linii pod nazwą elementu w kolejności zgodnej z kolejnością wystąpienia w dokumencie XML. Każdy atrybut wypisywany jest według następującej formuły. Na początku wypisywane są znaki spacji: tyle ile dla nazwy elementu plus 4 dodatkowe. Po tym następują kolejno: nazwa atrybutu, spacja, znak równości, spacja i wartość atrybutu.
- Po atrybutach wypisywane są elementy potomne, w kolejności wystąpienia w dokumencie XML i zgodnie z regułami 1 i 2.
- Ostatnia linia dokumentu KWIX jest zakończona znakiem nowej linii.
- Prezentacja tekstu między elementami, komentarzy, przestrzeni nazw i innych nie wymienionych powyżej składników języka XML jest przedmiotem dalszych prac i będzie ujęta w kolejnych wersjach formatu KWIX.
Tobie jako świeżo upieczonemu członkowi Koła przypadł w udziale obowiązek i przyjemność zaimplementowania tego, co wymyślili Twoi starsi koledzy i koleżanki. Napisz program, który zamieni dokument XML na KWIX zgodnie ze specyfikacją.
Wejście
Dane podawane są na standardowe wejście. Stanowią one poprawny dokument XML. W dokumencie tym nazwy elementów oraz nazwy i wartości atrybutów składają się wyłącznie z małych i wielkich liter alfabetu łacińskiego oraz cyfr. Nie występują tu początkowe linie z deklaracjami XML. Brak jest też komentarzy i tekstu. Między elementami występują jedynie znaki spacji i nowej linii. Każdy element otwierający (nazwa i atrybuty) zaczyna się i kończy w tej samej linii. Wartości atrybutów podawane są w cudzysłowach. Cały dokument zawiera nie więcej niż 10 000 znaków.
Wyjście
Wynik programu powinien być wypisywany na standardowe wyjście. Jest nim dokument XML z wejścia przekształcony do formatu KWIX.
Przykład
dane wejściowe:
<zbiory>
<zbior nazwa="pierwszy" licznosc="2">
<roslina nazwa="trawa" >
<lisc kolor="zielony"/> <lodyga/>
</roslina>
<roslina nazwa="tulipan" typ="kwiat">
<lisc kolor="zielony" dlugosc="10"/><kwiat>
<platek kolor="czerwony"><robak /></platek>
</kwiat>
</roslina></zbior>
<zbior licznosc="0"></zbior></zbiory>
wynik:
zbiory:
zbior:
nazwa = pierwszy
licznosc = 2
roslina:
nazwa = trawa
lisc:
kolor = zielony
lodyga:
roslina:
nazwa = tulipan
typ = kwiat
lisc:
kolor = zielony
dlugosc = 10
kwiat:
platek:
kolor = czerwony
robak:
zbior:
licznosc = 0
Dodane przez: | Michael Suchacz |
Data dodania: | 2009-07-24 |
Limit czasu wykonania programu: | 0.200s |
Limit długości kodu źródłowego | 50000B |
Limit pamięci: | 1536MB |
Cluster: | Cube (Intel G860) |
Języki programowania: | All except: GOSU |
Pochodzenie: | Podlaski Turniej w Programowaniu Zespołowym |