Konkursy — instrukcja

Na początek ściągnijcie program Notepad++, np. stąd i zainstalujcie go. Kiedy już go będziecie miały, możecie zabrać się za przerabianie. Uwaga: żeby polskie literki nie robiły nam niespodzianek, pracujcie w kodowaniu UTF-8 (Format → Konwertuj na format UTF-8).

O XML-u ogólnie

XML jest bardzo wygodnym sposobem trzymania różnych danych, nawet takich z bogatą strukturą. Wygląda jak zwykły tekst, w którym występują tzw. znaczniki (inaczej tagi albo elementy). Jeśli widziałyście kiedyś, jak wygląda html, wiecie, o co chodzi.

Elementy mogą mieć w środku zawartość tekstową, inne elementy oraz mogą być wyposażone w atrybuty. Każdy znacznik musi być zamknięty. Uwaga: liczy się wielkość liter; wszystkie tagi, których używamy, niech będą pisane wyłącznie małymi.

Nasz XML

Rodzaje używanych znaczników i atrybutów definiujemy sobie sami. U nas wygląda to następująco: dla każdego konkursu jest element konkurs, z atrybutem id, wewnątrz którego są elementy nazwa, organizator, jeden lub wiele (albo też wcale :) ) elementów cel i tak dalej. Ściągnijcie i obejrzyjcie sobie plik konkursy-kuba.xml (obejrzyjcie w tym podarsowanym notatniku, o którym piszę na początku i w którym będziecie wprowadzać dane do swoich plików; jeśli otworzycie ten plik w przeglądarce, będziecie miały jedną wielką kaszankę — ciągły strumień tekstu — a tutaj chodzi o to, żebyście zobaczyły strukturę).

Myślę, że najlepiej będzie, jeśli utworzycie nowy plik, np. konkursy-nowe.xml (albo wręcz po jednym nowym pliku na łebka, żeby można było wstukiwać równolegle), w którym w elemencie głównym konkursy (głównym czyli takim, wewnątrz którego jest de facto cały dokument) będą znajdować się elementy konkurs z odpowiednimi danymi.

Plik konkursy-kuba.xml jest podłączony do strony znajdującej się pod adresem http://sem.edu.pl/konkursy/. Zajrzyjcie tam w wolnej chwili i trochę sobie poklikajcie, żeby zobaczyć, co mniej więcej daje trzymanie tych danych w formie XML-a (w skrócie: możliwość wyszukiwania po różnych kategoriach połączona z dosyć rozwiniętymi opisami).

Dopisywać powinnyście analogicznie, jak jest w istniejącym pliku. Poniżej omówię poszczególne elementy.

Wewnątrz złożonych opisów możemy używać zwykłych znaczników html, np. jeśli chcemy dany tekst zawrzeć w paru akapitach, każdy akapit zamykamy w znaczniku p, czyli jakoś tak: <p>[treść akapitu]</p>. Jeśli chcemy jakąś listę wypunktowaną, walimy znacznik ul, czyli listę, wewnątrz którego umieszczamy ileśtam znaczników li, czyli elementów listy (przykład użycia w konkursie Dogonić Piotra Crügera). Jeśli chcemy coś wyróżnić, czyli puścić w cudzysłowie, zamykamy to w znacznik q (przykład w tym samym konkursie). Jeśli potrzebujemy przejść do nowej linii, walimy znacznik <br/> (ale ładniej jest stosować akapity).

Powyższy schemat nie uwzględnia wszystkich rodzajów kategorii, bo nie wszystkie były gotowe, kiedy dziewczyny dały mi źródła do przerabiania. Nad nieuwzględnionymi kategoriami będziemy musieli pogadać, bo trzeba będzie ustalić jakiś format dla nich. Na razie proponuję, byście wprowadziły z nowych konkursów istniejące kategorie.

Znowu ogólnie o XML-u

To co napisałem wcześniej powinno Wam w zupełności wystarczyć, ale jeśli chcecie się wgłębić, możecie spróbować przebrnąć jeszcze przez niniejszą część.

XML musi mieć mniej więcej postać

<element-glowny>
	<element>tekst teskt tekst</element>
	<element>
		tekst tekst
		dużo
		tekstu
		i w ogóle
		<zagniezdzone>
			<elementy>z tekstem</elementy>
			z większą ilością tekstu
		</zagniezdzone>
	</element>
	<element atrybut="mielonka" kolor="różowy" twardosc-w-skali-mohsa="1" w-innych-ciapkach='no właśnie'>
		wnętrze elementu
	</element>
	<element-bez-zawartosci jakis-atrybut="17"/>
</element-glowny>
			

Generalnie: elementy mogą być w elementach, mogą mieć zawartość tekstową, mogą mieć atrybuty. Jeśli wewnątrz elementu fabryka-mielonki otworzymy element puszka-mielonki, to musi być on zamknięty, zanim zamkniemy element fabryka-mielonki. Złe podomykanie tagów będzie najczęstszą przyczyną, dla której dokument będzie niepoprawny składniowo. Nie ma cudów, przy tej wielkości dokumentach nie da się wyprodukować od razu poprawnego XML-a. Jeśli będziecie korzystać z walidatora (poniżej), nauczycie się wkrótce błyskawicznie znajdować niepodomykane tagi. Notabene, edytor Wam to ułatwia — wystarczy kliknąć w znacznik zamykający lub otwierający i od razu jest podświetlany ten drugi z pary. Elementy w tym edytorze można też zwijać i rozwijać.

Aby ułatwić sobie wyłapywanie błędnie podomykanych tagów oraz generalnie łapanie się w strukturze danego dokumentu, róbcie wcięcia. Element bardziej zagnieżdżony ma być bardziej wcięty niż mniej zagnieżdżony. Przykład:

<opis>
	<p>Krótki akapit.</p>
	<p>
		Bardzo, bardzo, bardzo, bardzo, bardzo, bardzo, bardzo, bardzo, bardzo, bardzo, bardzo, bardzo, bardzo, bardzo, bardzo, 
		bardzo, bardzo, bardzo, bardzo, bardzo, bardzo, bardzo, bardzo, bardzo, bardzo długi akapit.
	</p>
	<p>Krótki akapit z <i>krótką wstawką</i>.</p>
	<element>
		tekst tekst tekst
		<podelement>
			tekst tekst tekst...
		</podelement>
	</element>
</opis>
			

Wcięcia robimy oczywiście tabem.

Ponieważ dla XML niektóre znaki są specjalne (np. <, >, &), trzeba je wprowadzać w specjalny sposób — dla podanych przykładów odpowiednio &lt;, &gt;, &amp;.

Czy dany plik jest poprawny, łatwo sprawdzić za pomocą jakiegoś walidatora, np. http://www.xmlvalidation.com/. Trzeba wkleić tekst XML-a do okienka i kliknąć w „validate”.


Przepraszam Was bardzo, że ten tekst jest taki rozwlekły, ale nie umiem pisać jednocześnie zwięźle i precyzyjnie. Jeśli czegoś nie rozumiecie lub macie jakiekolwiek wąpliwości — spróbuję to wytłumaczyć jakoś inaczej. Ale na razie proponuję, byście po prostu wprowadziły nowe konkursy analogicznie do wprowadzonych.

Kuba