POLSKI SPOJ

Problem hidden
This problem was hidden by Editorial Board member probably because it has incorrect language version or invalid test data, or description of the problem is not clear.

Zadanie w systemie SPOJ (trudne)

4619. PTwPZ KWIX

Kod zadania: PTWPZ093

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:

  1. 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.
  2. 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.
  3. Po atrybutach wypisywane są elementy potomne, w kolejności wystąpienia w dokumencie XML i zgodnie z regułami 1 i 2.
  4. Ostatnia linia dokumentu KWIX jest zakończona znakiem nowej linii.
  5. 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:1s
Limit długości kodu źródłowego50000B
Języki programowania:All except: ERL JS PERL 6
Pochodzenie:Podlaski Turniej w Programowaniu Zespołowym

SPOJ System © 2012 Sphere Research Labs | Projekty informatyczne i aplikacje na zamówienie. All Rights Reserved.