reklama - zainteresowany?

XSLT dla każdego - Helion

XSLT dla każdego
Autor: Michiel van Otegem
Tytuł oryginału: TY XSLT in 21 Days
Tłumaczenie: Tomasz Żmijewski
ISBN: 83-7197-785-9
stron: 576, Format: B5, okładka: miękka
Data wydania: 2003-05-19
Księgarnia: Helion

Cena książki: 65,00 zł

Dodaj do koszyka XSLT dla każdego

Tagi: XML i XSLT - Programowanie

Język XSLT jest jedną z najważniejszych technologii związanych z XML. Za pomocą XSLT możemy przekształcić dokumenty XML, możemy także wygenerować plik HTML lub nawet zwykły plik tekstowy. Specyfikacja tego języka opracowana przez konsorcjum W3C nie jest łatwa w lekturze. Nawet jeśli programowałeś wcześniej w języku zorientowanym obiektowo lub języku strukturalnym, zrozumienie zasady działania XSLT może nastręczać pewne trudności. XSLT został bowiem oparty o zupełnie inny paradygmat, który poznasz w czasie lektury tej książki.

Książka "XSLT dla każdego" w przystępny sposób pomoże zrozumieć i opanować język XSLT. Od czytelników wymaga się jedynie podstawowej znajomości XML i technologii z XML związanych. Podczas pracy z XSLT będziemy jednocześnie pogłębiali swoją znajomość XML. Nauczymy się przekształcać dokumenty XML na kod HTML, dzięki czemu można je przeglądać w przeglądarce, nauczymy się też przetwarzać jedną postać XML na inną.

Przedstawiono:

  • Zalety, wady i obszary zastosowania XSLT
  • Narzędzia ułatwiające tworzenie i debugowanie plików XSLT, procesory XSLT: MSXML, Saxon, Xalan
  • Wybieranie fragmentów dokumentu XML za pomocą XPath
  • Użycie reguł, wstawianie tekstu i elementów
  • Przetwarzanie warunkowe i iteracyjne, zastosowanie rekurencji
  • Tworzenie dokumentów HTML
  • Użycie zmiennych i parametrów
  • Operacje na łańcuchach, formatowanie danych, sortowanie i numerowanie
  • Tworzenie arkuszy złożonych z wielu plików
  • Zagadnienia związane z przestrzeniami nazw
  • Metodologię projektowania aplikacji opartych na XML i XSLT
Książka "XSLT dla każdego" jest przeznaczona dla osób uczących się XSLT, ale nie tylko dla nich. Przydatna będzie też dla osób znających już podstawy XSLT, gdyż wiele zagadnień omawiamy bardzo szczegółowo. To kompletny przewodnik po tym języku programowania, od podstaw po zagadnienia zaawansowane.

Dodaj do koszyka XSLT dla każdego

 

Osoby które kupowały "XSLT dla każdego", wybierały także:

  • Flash i Wallaby. Projektowanie animacji zgodnych z HTML5
  • API nowoczesnej strony WWW. Usługi sieciowe w PHP
  • XML. Szybki start. Wydanie II
  • XML. Tworzenie stron WWW z wykorzystaniem XML, CSS, XHTML oraz XSLT. Niebieski podręcznik
  • Java i XML. Wydanie III

Dodaj do koszyka XSLT dla każdego

Spis treści

XSLT dla każdego -- spis treści

O Autorze (17)

Wstęp (19)

  • Dla kogo jest ta książka? (19)
  • Co trzeba wiedzieć przed rozpoczęciem lektury? (20)
  • Czego można się z tej książki nauczyć? (20)
  • Jakie oprogramowanie jest potrzebne do zrealizowania przykładów z tej książki? (20)
  • Jak zorganizowana jest ta książka? (20)
  • Konwencje przyjęte w książce (21)

Część I (23)

Rozdział 1. Rozpoczynamy naukę XSLT (25)

  • XSLT w skrócie (25)
    • Wprowadzenie do XML i XSLT (26)
    • XSLT i rodzina XML (29)
    • Zalety XSLT (33)
    • Kiedy nie należy używać XSLT (37)
  • Jak działa XSLT? (38)
    • Przekształcanie XSLT (38)
    • Programowanie deklaratywne (41)
  • Tworzenie plików XSLT (42)
    • Użycie edytora tekstowego (42)
    • Użycie edytora XML (42)
    • Edytory i debuggery XSLT (43)
    • Narzędzia projektowe XSLT (44)
  • Procesory przekształcające XML za pomocą XSLT (44)
    • MSXML (44)
    • Saxon (45)
    • Xalan (46)
  • Podsumowanie (47)
  • Pytania i odpowiedzi (47)
  • Zadania (48)
    • Quiz (48)
    • Ćwiczenie (48)

Rozdział 2. Pierwsze przekształcenia XML (51)

  • Anatomia arkusza stylów (51)
    • Czym jest arkusz stylów? (51)
    • Podstawowe składniki arkusza stylów (52)
    • Uproszczona składnia arkuszy stylów (61)
  • Wykonywanie arkusza stylów na dokumencie XML (62)
    • Łączenie arkusza stylów z dokumentem XML (63)
    • Zanurzanie arkuszy stylów w dokumentach XML (65)
    • Programowe wykonywanie arkusza stylu (66)
  • Podsumowanie (68)
  • Pytania i odpowiedzi (68)
  • Zadania (68)
    • Quiz (69)
    • Ćwiczenie (69)

Rozdział 3. Wybieranie danych (71)

  • Drzewa dokumentów XML (71)
    • Co to jest węzeł? (72)
    • Czym jest zbiór węzłów? (74)
  • XPath (75)
    • Wybieranie elementów (75)
    • Wybieranie atrybutów (81)
    • Techniki bardziej zaawansowane (82)
  • Podsumowanie (88)
  • Pytania i odpowiedzi (89)
  • Zadania (89)
    • Quiz (90)
    • Ćwiczenie (90)

Rozdział 4. Użycie reguł (91)

  • Reguły (91)
    • Reguły z bliska (91)
    • Korzyści wynikające ze stosowania reguł (93)
  • Tworzenie i użycie reguł (98)
    • Więcej o dopasowywaniu reguł (98)
    • Użycie nazwanych reguł (102)
  • Sprawdzanie, której reguły użyto (103)
    • Różne reguły na różne przypadki (103)
    • Priorytety reguł (105)
    • Definiowanie własnych priorytetów (108)
  • Podsumowanie (109)
  • Pytania i odpowiedzi (109)
  • Zadania (110)
    • Quiz (110)
    • Ćwiczenia (110)

Rozdział 5. Wstawianie tekstu i elementów (111)

  • Wstawianie tekstu (111)
    • Tekst ze znakami specjalnymi (112)
    • Znaki specjalne XSLT (114)
  • Wstawianie elementów i atrybutów (116)
    • Wstawianie elementów (116)
    • Wstawianie atrybutów (124)
  • Kopiowanie elementów z dokumentu źródłowego (129)
    • Kopiowanie jedynie węzła kontekstu (129)
    • Kopiowanie zbiorów węzłów i fragmentów drzewa (131)
  • Wstawianie komentarzy i instrukcji przetwarzania (132)
    • Wstawianie komentarzy (133)
    • Wstawianie instrukcji przetwarzania (134)
  • Podsumowanie (135)
  • Pytania i odpowiedzi (136)
  • Zadania (136)
    • Quiz (136)
    • Ćwiczenie (136)

Rozdział 6. Przetwarzanie warunkowe i iteracyjne (137)

  • Iteracja po zbiorze węzłów (137)
    • Przetwarzanie kolejnych węzłów ze zbioru (138)
    • Filtrowanie zbiorów węzłów (141)
    • Użycie funkcji operujących na zbiorach węzłów (143)
  • Przetwarzanie warunkowe (144)
    • Proste przetwarzanie warunkowe (144)
    • Przetwarzanie warunkowe - wiele możliwości (147)
  • Jeszcze o wyrażeniach (149)
    • Formalizm wyrażeń (149)
    • Użycie wielu predykatów (150)
    • Łączenie wyrażeń (151)
  • Użycie funkcji logicznych (152)
    • Negacja wyniku wyrażenia (153)
    • Konwersja na wartości logiczne (153)
  • Podsumowanie (154)
  • Pytania i odpowiedzi (154)
  • Zadania (155)
    • Quiz (155)
    • Ćwiczenia (155)

Rozdział 7. Kontrola postaci danych wynikowych (157)

  • Różne formaty wynikowe (157)
    • Dane wynikowe XML (158)
    • Format wynikowy HTML (160)
    • Dane wynikowe w innych formatach (163)
    • Określanie typu nośnika (166)
  • Kodowanie wynikowe i cytowanie (166)
    • Określanie kodowania wynikowego (167)
    • Kodowanie nieobsługiwanych znaków (167)
    • Wyłączanie cytowania (168)
  • Obsługa białych znaków (170)
    • Jak są obsługiwane białe znaki (170)
    • Odrzucanie białych znaków z dokumentu źródłowego (171)
    • Obsługa białych znaków w arkuszu (175)
    • Wcięcia (177)
  • Podsumowanie (178)
  • Pytania i odpowiedzi (179)
  • Zadania (179)
    • Quiz (179)
    • Ćwiczenie (180)

Część II (181)

Rozdział 8. Użycie zmiennych (183)

  • O zmiennych (183)
    • Czym są zmienne? (183)
    • Jakie są zalety stosowania zmiennych? (184)
  • Tworzenie i używanie zmiennych (186)
    • Użycie zmiennych prostych (186)
    • Użycie zmiennych złożonych (189)
  • Tworzenie zmiennych na podstawie wyrażeń (191)
    • Użycie zmiennych zastępujących wyrażenia (191)
    • Użycie zmiennych do danych spoza kontekstu (194)
    • Tworzenie zmiennych za pomocą elementów XSLT (198)
  • Podsumowanie (199)
  • Pytania i odpowiedzi (199)
  • Zadania (200)
    • Quiz (200)
    • Ćwiczenie (200)

Rozdział 9. Użycie parametrów (201)

  • Parametry (201)
    • Czym są parametry? (202)
    • Jakie zalety ma stosowanie parametrów? (203)
  • Użycie parametrów (203)
    • Użycie parametrów do zmiany postaci wyniku (204)
    • Użycie parametrów do tworzenia reguł - funkcji (207)
    • Pobieranie danych spoza arkusza (210)
  • Podsumowanie (216)
  • Pytania i odpowiedzi (216)
  • Zadania (217)
    • Quiz (217)
    • Ćwiczenie (217)

Rozdział 10. Typy danych (219)

  • Typy danych - podstawy (219)
    • Co to jest typ danych? (220)
    • Typy danych w XSLT (220)
  • Konwersje typów danych (227)
    • Jawne konwersje typów danych (228)
    • Niejawne konwersje typów danych (230)
    • Pułapki konwersji (230)
  • Porównywanie wartości (231)
    • Pułapki związane z porównywaniem (231)
  • Podsumowanie (232)
  • Pytania i odpowiedzi (233)
  • Zadania (233)
    • Quiz (234)
    • Ćwiczenie (234)

Rozdział 11. Użycie łańcuchów (235)

  • Operacje na łańcuchach (235)
    • Sklejanie łańcuchów (235)
    • Odszukiwanie znaków w łańcuchu (238)
    • Określanie długości łańcucha (242)
    • Użycie części łańcuchów (243)
    • Zastępowanie części łańcucha (247)
  • Formatowanie danych (248)
    • Formatowanie liczb (248)
    • Formatowanie dat i czasu (252)
    • Formatowanie innych danych (254)
  • Podsumowanie (254)
  • Pytania i odpowiedzi (254)
  • Zadania (255)
    • Quiz (255)
    • Ćwiczenia (255)

Rozdział 12. Sortowanie i numerowanie (257)

  • Sortowanie (257)
    • Sortowanie statyczne (258)
    • Sortowanie dynamiczne (265)
  • Numerowanie (266)
    • Wstawianie numerowania (267)
    • Kontrola postaci numerowania (273)
  • Podsumowanie (275)
  • Pytania i odpowiedzi (276)
  • Zadania (276)
    • Quiz (277)
    • Ćwiczenia (277)

Rozdział 13. Wieloplikowe arkusze stylów (279)

  • Użycie wieloplikowych arkuszy stylów (279)
    • Zalety wieloplikowych arkuszy stylów (280)
    • Wady wieloplikowych arkuszy stylów (280)
  • Włączanie arkuszy stylów (281)
    • Zduplikowane reguły (286)
    • Zduplikowane zmienne i parametry (287)
  • Importowanie arkuszy stylów (287)
    • Różnice między włączaniem a importowaniem (287)
    • Jak zaimportować arkusz stylów (288)
    • Nadpisywanie reguł (289)
    • Zasady importu innych składników arkusza (292)
  • Podsumowanie (295)
  • Pytania i odpowiedzi (296)
  • Zadania (297)
    • Quiz (297)
    • Ćwiczenie (297)

Rozdział 14. Użycie wielu źródłowych plików XML (299)

  • Korzystanie z innych źródeł XML (299)
    • Pobieranie danych ze źródła XML (300)
    • Dynamiczne definiowanie dodatkowych dokumentów (309)
    • Wskazywanie dokumentów źródłowych (311)
    • Wskazywanie pliku znajdującego się na innym serwerze (312)
  • Dostęp do elementów arkusza stylów (313)
  • Wiele dokumentów: za i przeciw (314)
    • Pułapki związane z używaniem wielu dokumentów (314)
    • Wskazówki dotyczące używania wielu dokumentów (315)
  • Podsumowanie (316)
  • Pytania i odpowiedzi (316)
  • Zadania (317)
    • Quiz (317)
    • Ćwiczenia (317)

Część III (319)

Rozdział 15. Przestrzenie nazw (321)

  • Co to są przestrzenie nazw (321)
    • Wszystko o przestrzeniach nazw (322)
    • Zalety przestrzeni nazw (325)
    • Wady przestrzeni nazw (326)
    • Przestrzenie nazw, DTD i schematy XML (327)
  • Przetwarzanie XML zawierającego przestrzenie nazw (328)
  • Pobieranie informacji o przestrzeniach nazw (330)
  • Wstawianie i usuwanie przestrzeni nazw (331)
    • Wstawianie węzłów z przestrzenią nazw (331)
    • Zmiana przestrzeni nazw (333)
    • Usuwanie przestrzeni nazw (335)
  • Podsumowanie (338)
  • Pytania i odpowiedzi (339)
  • Zadania (339)
    • Quiz (339)
    • Ćwiczenie (340)

Rozdział 16. Zaawansowane metody wybierania danych (341)

  • Jeszcze o wyrażeniach (341)
    • Dopasowywanie a wybieranie danych (342)
    • Porównywanie wartości (343)
    • Pobieranie wartości bez powtórzeń (343)
  • Użycie kluczy (345)
    • Co to jest klucz? (345)
    • Wybieranie danych za pomocą kluczy (346)
  • Użycie niepowtarzalnych identyfikatorów ID (352)
    • Wybieranie danych według identyfikatora ID (354)
    • Wstawianie niepowtarzalnych wartości ID (354)
    • Użycie kluczy i generowanych identyfikatorów do wybierania niepowtarzających się wartości (357)
  • Podsumowanie (358)
  • Pytania i odpowiedzi (359)
  • Zadania (359)
    • Quiz (359)
    • Ćwiczenie (360)

Rozdział 17. Rekurencja (361)

  • Rekurencja (361)
    • Co to jest rekurencja? (361)
    • Po co i kiedy używa się rekurencji? (362)
    • Wady rekurencji (364)
  • Tworzenie reguł rekurencyjnych (365)
    • Rekurencja z pojedynczymi wartościami (368)
    • Sumowanie za pomocą rekurencji (369)
  • Podsumowanie (372)
  • Pytania i odpowiedzi (373)
  • Zadania (373)
    • Quiz (373)
    • Ćwiczenia (374)

Rozdział 18. Obliczeniowe arkusze stylów (375)

  • Wszystko o obliczeniowych arkuszach stylów (375)
    • Co to jest obliczeniowy arkusz stylów? (375)
    • Kiedy używa się arkuszy obliczeniowych? (376)
  • Operatory i funkcje używane w obliczeniach (377)
    • Operatory (377)
    • Funkcje (379)
  • Aplikacje obliczeniowe (383)
    • Ranking drużyn (383)
    • Przetwarzanie łańcuchów (388)
    • Przeliczanie walut (390)
  • Podsumowanie (392)
  • Pytania i odpowiedzi (392)
  • Zadania (393)
    • Quiz (393)
    • Ćwiczenie (393)

Rozdział 19. Korzystanie z rozszerzeń XSLT (395)

  • Wszystko o rozszerzeniach XSLT (395)
    • Czym są rozszerzenia? (395)
    • Zalety rozszerzeń (396)
    • Wady rozszerzeń (396)
    • Jak działają rozszerzenia XSLT? (397)
  • Użycie wbudowanych rozszerzeń (398)
    • Użycie elementów rozszerzających (398)
    • Użycie funkcji rozszerzających (401)
    • Użycie rozszerzeń w innych procesorach (403)
  • Tworzenie własnych funkcji rozszerzających (403)
    • Użycie funkcji języka Java jako funkcji rozszerzających (403)
    • Tworzenie skryptowych funkcji rozszerzających (406)
  • Podsumowanie (409)
  • Pytania i odpowiedzi (410)
  • Zadania (410)
    • Quiz (410)
    • Ćwiczenia (411)

Rozdział 20. Użycie różnych procesorów (413)

  • Przenośne arkusze XSLT (413)
    • Najważniejsze różnice między procesorami (414)
    • Radzenie sobie z różnicami między procesorami (417)
    • Radzenie sobie z różnymi wersjami XSLT (421)
  • Możliwości serwerów baz danych w zakresie XML (423)
    • Pobieranie i przekształcanie danych XML w Oracle (424)
    • Pobieranie danych XML z SQL Servera Microsoftu (427)
  • Podsumowanie (428)
  • Pytania i odpowiedzi (429)
  • Zadania (429)
    • Quiz (430)
    • Ćwiczenie (430)

Rozdział 21. Projektowanie aplikacji XML i XSLT (431)

  • Projektowanie XML (431)
    • Uwagi o projektowaniu XML (433)
    • Narzędzia projektowe (440)
  • Projektowanie XSLT (441)
    • Uwagi o projektowaniu XSLT (441)
    • Zalecenia dla programistów XSLT (445)
  • Podsumowanie (446)
  • Pytania i odpowiedzi (447)
  • Zadania (447)
    • Quiz (447)
    • Ćwiczenie (448)

Dodatki (449)

Dodatek A Odpowiedzi do quizu i rozwiązania ćwiczeń (451)

  • Odpowiedzi do rozdziału 1. (451)
    • Odpowiedzi do quizu (451)
    • Rozwiązanie ćwiczenia (451)
  • Odpowiedzi do rozdziału 2. (452)
    • Odpowiedzi do quizu (452)
    • Rozwiązanie ćwiczenia (452)
  • Odpowiedzi do rozdziału 3. (452)
    • Odpowiedzi do quizu (452)
    • Rozwiązanie ćwiczenia (453)
  • Odpowiedzi do rozdziału 4. (453)
    • Odpowiedzi do quizu (453)
    • Rozwiązania ćwiczeń (454)
  • Odpowiedzi do rozdziału 5. (455)
    • Odpowiedzi do quizu (455)
    • Rozwiązanie ćwiczenia (456)
  • Odpowiedzi do rozdziału 6. (456)
    • Odpowiedzi do quizu (456)
    • Rozwiązania ćwiczeń (457)
  • Odpowiedzi do rozdziału 7. (458)
    • Odpowiedzi do quizu (458)
    • Rozwiązanie ćwiczenia (458)
  • Odpowiedzi do rozdziału 8. (459)
    • Odpowiedzi do quizu (459)
    • Rozwiązanie ćwiczenia (459)
  • Odpowiedzi do rozdziału 9. (460)
    • Odpowiedzi do quizu (460)
    • Rozwiązanie ćwiczenia (461)
  • Odpowiedzi do rozdziału 10. (462)
    • Odpowiedzi do quizu (462)
    • Rozwiązanie ćwiczenia (462)
  • Odpowiedzi do rozdziału 11. (463)
    • Odpowiedzi do quizu (463)
    • Rozwiązania ćwiczeń (463)
  • Odpowiedzi do rozdziału 12. (465)
    • Odpowiedzi do quizu (465)
    • Rozwiązania ćwiczeń (466)
  • Odpowiedzi do rozdziału 13. (467)
    • Odpowiedzi do quizu (467)
    • Rozwiązanie ćwiczenia (467)
  • Odpowiedzi do rozdziału 14. (468)
    • Odpowiedzi do quizu (468)
    • Rozwiązania ćwiczeń (468)
  • Odpowiedzi do rozdziału 15. (469)
    • Odpowiedzi do quizu (469)
    • Rozwiązanie ćwiczenia (470)
  • Odpowiedzi do rozdziału 16. (471)
    • Odpowiedzi do quizu (471)
    • Rozwiązanie ćwiczenia (471)
  • Odpowiedzi do rozdziału 17. (472)
    • Odpowiedzi do quizu (472)
    • Rozwiązania ćwiczeń (472)
  • Odpowiedzi do rozdziału 18. (474)
    • Odpowiedzi do quizu (474)
    • Rozwiązanie ćwiczenia (474)
  • Odpowiedzi do rozdziału 19. (476)
    • Odpowiedzi do quizu (476)
    • Rozwiązania ćwiczeń (476)
  • Odpowiedzi do rozdziału 20. (477)
    • Odpowiedzi do quizu (477)
    • Rozwiązanie ćwiczenia (477)
  • Odpowiedzi do rozdziału 21. (478)
    • Odpowiedzi do quizu (478)
    • Rozwiązania ćwiczeń (479)

Dodatek B Zestawienie elementów i funkcji XSLT (481)

  • Elementy XSLT (482)
    • xsl:apply-imports (482)
    • xsl:apply-templates (482)
    • xsl:attribute (483)
    • xsl:attribute-set (483)
    • xsl:call-template (484)
    • xsl:choose (484)
    • xsl:comment (485)
    • xsl:copy (485)
    • xsl:copy-of (486)
    • xsl:decimal-format (486)
    • xsl:element (488)
    • xsl:fallback (488)
    • xsl:for-each (489)
    • xsl:if (489)
    • xsl:import (490)
    • xsl:include (490)
    • xsl:key (491)
    • xsl:message (491)
    • xsl:namespace-alias (492)
    • xsl:number (493)
    • xsl:otherwise (494)
    • xsl:output (494)
    • xsl:param (495)
    • xsl:preserve-space (496)
    • xsl:processing-instruction (496)
    • xsl:sort (497)
    • xsl:strip-space (498)
    • xsl:stylesheet (498)
    • xsl:template (499)
    • xsl:text (500)
    • xsl:transform (500)
    • xsl:value-of (500)
    • xsl:variable (501)
    • xsl:when (502)
    • xsl:with-param (502)
  • Funkcje XSLT i XPath (503)
    • boolean() (503)
    • ceiling() (504)
    • concat() (504)
    • contains() (504)
    • count() (505)
    • current() (505)
    • document() (505)
    • element-available() (506)
    • false() (506)
    • floor() (507)
    • format-number() (507)
    • function-available() (508)
    • generate-id() (508)
    • id() (509)
    • key() (509)
    • lang() (509)
    • last() (510)
    • local-name() (510)
    • name() (511)
    • namespace-uri() (511)
    • normalize-space() (511)
    • not() (512)
    • number() (512)
    • position() (513)
    • round() (513)
    • starts-with() (514)
    • string() (514)
    • string-length() (515)
    • substring() (515)
    • substring-after() (515)
    • substring-before() (516)
    • sum() (516)
    • system-property() (517)
    • translate() (517)
    • true() (518)
    • unparsed-entity-uri() (518)

Dodatek C Wywoływanie wybranych procesorów z wiersza poleceń (519)

  • MSXSL (519)
    • Użycie (520)
    • Opcje (520)
  • Saxon (520)
    • Użycie (521)
    • Opcje (521)
  • Xalan (521)
    • Użycie (521)
    • Opcje (521)

Dodatek D XML w Sieci (525)

Dodatek E Przykładowe projekty (527)

  • Tworzenie artykułu ze spisem treści (527)
    • Założenia projektowe (527)
    • Artykuł oznakowany jako XML (528)
    • Dokument XSLT (530)
  • Tworzenie wieloplikowego arkusza stylów z parametrami (537)
    • Początek projektu (538)
    • Tworzenie drugiego arkusza stylów (542)
    • Arkusz stylów do wszystkich danych (544)
  • Koszyk na zakupy w XSLT (545)
    • Katalog towarów (546)
    • Koszyk na zakupy (547)
    • Wyświetlanie danych (548)
    • Aktualizacja koszyka (552)
    • Wywołanie procesora (555)

Skorowidz (563)

Dodaj do koszyka XSLT dla każdego

Code, Publish & WebDesing by CATALIST.com.pl



(c) 2005-2024 CATALIST agencja interaktywna, znaki firmowe należą do wydawnictwa Helion S.A.