
Setki gotowych rozwiązań dla programistów XML i XSLT
Język XSLT to jedna z najważniejszych technologii służących do przekształcania dokumentów XML. Za pomocą tego języka można pobierać dane XML, przekształcać je na strony HTML, a nawet generować na ich podstawie wykresy w formacie SVG. Niniejsza książka to praktyczny przewodnik po tych oraz wielu innych funkcjach języka XSLT, a przedstawiony w niej materiał obejmuje także rozbudowane możliwości najnowszej wersji -- XSLT 2.0.
Książka "XSLT. Receptury. Wydanie II" zawiera setki gotowych rozwiązań problemów stojących przed programistami używającymi XSLT. Znajdziesz tu sposoby wykonania różnych zadań związanych z transformacją danych XML, zarówno tych podstawowych, jak i skomplikowanych. Poznasz rozmaite techniki przetwarzania dokumentów XML bazujące na obu wersjach języka XSLT. Zrozumiesz także praktyczne zagadnienia związane z wydajnością tworzonych rozwiązań i wygodą ich stosowania. W wielu recepturach znajdziesz alternatywne rozwiązania problemów, dzięki czemu będziesz mógł wybrać technikę najbardziej odpowiadającą wykonywanemu przez Ciebie zadaniu.
- Opis XSLT 2.0
- Wprowadzenie do języka XPath
- Wyszukiwanie danych w dokumentach XML
- Przekształcanie danych XML na różne formaty (zwykły tekst, HTML, SVG, XML)
- Przetwarzanie łańcuchów znaków i wyrażeń matematycznych
- Obsługa dat i czasu
- Obsługa zapytań XML
- Obsługa XSLT w innych językach
- Generowanie kodu
- Zaawansowane zastosowania XSLT
- Testowanie arkuszy XSLT
Gotowe rozwiązania przedstawione w tej książce pomogą
Ci w szybkim tworzeniu niezawodnych programów.
Przedmowa (9)1. XPath (17)
- 1.0. Wprowadzenie (17)
- 1.1. Efektywne używanie osi (18)
- 1.2. Filtrowanie węzłów (22)
- 1.3. Praca z sekwencjami (25)
- 1.4. Skracanie kodu warunków z użyciem wyrażeń "if" (26)
- 1.5. Eliminowanie rekurencji z wyrażeń "for" (29)
- 1.6. Radzenie sobie ze skomplikowaną logiką z użyciem kwantyfikatorów (31)
- 1.7. Używanie operacji na zbiorach (32)
- 1.8. Używanie porównań węzłów (33)
- 1.9. Radzenie sobie z rozszerzonym systemem typów XPath 2.0 (34)
- 1.10. Wykorzystywanie rozszerzonego systemu typów XPath 2.0 (36)
- 2.0. Wprowadzenie (37)
- 2.1. Sprawdzanie, czy dany łańcuch znaków
kończy się innym łańcuchem znaków (38)
- 2.2. Znajdowanie pozycji podłańcucha znaków (39)
- 2.3. Usuwanie wybranych znaków z łańcucha znaków (39)
- 2.4. Znajdowanie podłańcuchów na końcu łańcucha znaków (41)
- 2.5. Powtórzenie łańcucha znaków N razy (46)
- 2.6. Odwracanie łańcucha znaków (48)
- 2.7. Zastępowanie tekstu (52)
- 2.8. Zmiana wielkości liter (56)
- 2.9. Tokenizacja łańcucha znaków (58)
- 2.10. Radzenie sobie bez wyrażeń regularnych (60)
- 2.11. Wykorzystywanie wyrażeń regularnych (62)
- 2.12. Korzystanie z rozszerzeń dla łańcuchów znaków EXSLT (63)
- 3.0. Wprowadzenie (67)
- 3.1. Formatowanie liczb (68)
- 3.2. Zaokrąglanie liczb z określoną dokładnością (76)
- 3.3. Konwersja z liczb rzymskich na arabskie (77)
- 3.4. Konwersja z jednej podstawy na inną (79)
- 3.5. Implementacja popularnych funkcji matematycznych (82)
- 3.6. Obliczanie sum i iloczynów (92)
- 3.7. Znajdowanie minimum i maksimum (97)
- 3.8. Obliczanie funkcji statystycznych (103)
- 3.9. Obliczanie funkcji kombinatorycznych (106)
- 3.10. Testowanie bitów (108)
- 4.0. Wprowadzenie (113)
- 4.1. Obliczanie dnia tygodnia (115)
- 4.2. Obliczanie ostatniego dnia miesiąca (116)
- 4.3. Otrzymanie nazw dni i miesięcy (117)
- 4.4. Obliczanie numeru dnia juliańskiego i bezwzględnego dla podanej daty (121)
- 4.5. Obliczanie numeru tygodnia dla podanej daty (125)
- 4.6. Praca z kalendarzem juliańskim (126)
- 4.7. Praca z kalendarzem ISO (127)
- 4.8. Praca z kalendarzem muzułmańskim (129)
- 4.9. Praca z kalendarzem żydowskim (131)
- 4.10. Formatowanie daty i czasu (138)
- 4.11. Ustalenie świąt świeckich i religijnych (149)
- 5.0. Wprowadzenie (153)
- 5.1. Ignorowanie zduplikowanych elementów (155)
- 5.2. Wybór wszystkich elementów z wyjątkiem jakiegoś określonego (160)
- 5.3. Wybieranie węzłów poprzez kontekst (161)
- 5.4. Przechodzenie drzewa w porządku "preorder" (162)
- 5.5. Przechodzenie drzewa w porządku "postorder" (166)
- 5.6. Przechodzenie drzewa w porządku "in-order" (168)
- 5.7. Przechodzenie drzewa w porządku "level-order" (171)
- 5.8. Przetwarzanie węzłów według pozycji (175)
- 6.0. Wprowadzenie (181)
- 6.1. Konwersja prostych nazwanych szablonów na funkcje XSLT (182)
- 6.2. Przewaga "for-each-group" nad metodą grupowania Muencha (183)
- 6.3. Modularyzacja i tryby (186)
- 6.4. Używanie typów dla bezpieczeństwa i dokładności (187)
- 6.5. Unikanie pułapek przy przenoszeniu aplikacji z XSLT 1.0 na 2.0 (188)
- 6.6. Emulowanie wzorców projektowych i metod ponownego użycia
znanych z programowania zorientowanego obiektowo (190)
- 6.7. Przetwarzanie nieustrukturyzowanego tekstu
za pomocą wyrażeń regularnych (194)
- 6.8. Rozwiązywanie trudnych problemów serializacyjnych z tablicami znaków (197)
- 6.9. Zwracanie wielu dokumentów (198)
- 6.10. Radzenie sobie z literałami łańcuchowymi zawierającymi cudzysłowy (200)
- 6.11. Rozumienie nowych możliwości starych cech XSLT 1.0 (201)
- 7.0. Wprowadzenie (207)
- 7.1. Radzenie sobie z białymi znakami (208)
- 7.2. Eksportowanie XML do danych rozdzielonych ogranicznikami (212)
- 7.3. Utworzenie raportu z kolumnami (227)
- 7.4. Wyświetlanie hierarchii (236)
- 7.5. Numerowanie tekstowych danych wyjściowych (243)
- 7.6. Zawijanie tekstu do określonej szerokości i wyrównania (250)
- 8.0. Wprowadzenie (255)
- 8.1. Konwersja atrybutów na elementy (256)
- 8.2. Konwersja elementów na atrybuty (258)
- 8.3. Zmiana nazwy elementów lub atrybutów (261)
- 8.4. Łączenie dokumentów o identycznym schemacie (266)
- 8.5. Łączenie dokumentów o różnych schematach (270)
- 8.6. Dzielenie dokumentów (275)
- 8.7. Spłaszczanie hierarchii XML (276)
- 8.8. Pogłębianie hierarchii XML (279)
- 8.9. Reorganizacja hierarchii XML (284)
- 9.0. Wprowadzenie (289)
- 9.1. Wykonywanie operacji na zbiorach węzłów (290)
- 9.2. Wykonywanie operacji na zbiorach węzłów
z użyciem semantyki wartości (293)
- 9.3. Ustalanie równości zbiorów według wartości (301)
- 9.4. Wykonywanie zapytań zachowujących strukturę (305)
- 9.5. Złączenia (306)
- 9.6. Implementowanie przypadków użycia zapytań XML z W3C w XSLT (311)
- 10.0. Wprowadzenie (335)
- 10.1. Używanie XSLT jako języka stylizacji (336)
- 10.2. Tworzenie dokumentów z hiperłączami (342)
- 10.3. Tworzenie tabel HTML (345)
- 10.4. Tworzenie ramek (351)
- 10.5. Tworzenie arkuszy stylów sterowanych przez dane (356)
- 10.6. Tworzenie samodzielnej transformacji HTML (362)
- 10.7. Wypełnianie formularza (365)
- 11.0. Wprowadzenie (371)
- 11.1. Transformacja istniejącego SVG (372)
- 11.2. Tworzenie nadających się do ponownego użycia narzędzi
generujących SVG dla wykresów (378)
- 11.3. Tworzenie diagramu drzewa (408)
- 11.4. Tworzenie interaktywnych stron internetowych z SVG (416)
- 12.0. Wprowadzenie (425)
- 12.1. Generowanie definicji stałych (433)
- 12.2. Generowanie kodu przełączającego (436)
- 12.3. Generowanie zaślepek dla kodu obsługi komunikatów (440)
- 12.4. Generowanie opakowań dla danych (443)
- 12.5. Generowanie pretty-printer (447)
- 12.6. Generowanie klienta webowego do wprowadzania danych testowych (453)
- 12.7. Generowanie CGI do wprowadzania danych testowych (454)
- 12.8. Generowanie kodu z modeli UML za pomocą XMI (458)
- 12.9. Generowanie XSLT z XSLT (472)
- 13.0. Wprowadzenie (477)
- 13.1. Konwersja dokumentów Visio VDX na SVG (478)
- 13.2. Praca z arkuszami kalkulacyjnymi Excel XML (489)
- 13.3. Generowanie map pojęć XTM z modeli UML za pomocą XMI (496)
- 13.4. Generowanie stron internetowych z map pojęć XTM (511)
- 13.5. Dostarczanie dokumentacji SOAP za pomocą WSDL (524)
- 14.0. Wprowadzenie (537)
- 14.1. Funkcje rozszerzeń w Saxonie (538)
- 14.2. Elementy rozszerzeń Saxona (539)
- 14.3. Funkcje rozszerzeń Xalan-Java 2 (539)
- 14.4. Funkcje rozszerzeń Javy z użyciem przestrzeni nazw formatu klasy (540)
- 14.5. Funkcje rozszerzeń Javy z użyciem przestrzeni nazw formatu pakietu (540)
- 14.6. Funkcje rozszerzeń Javy z użyciem przestrzeni nazw formatu Javy (540)
- 14.7. Tworzenie skryptów funkcji rozszerzeń za pomocą kodu skryptu
wewnątrz programu (541)
- 14.8. Elementy rozszerzeń Xalan-Java 2 (541)
- 14.9. Elementy rozszerzeń Javy (541)
- 14.10. Tworzenie skryptów elementów rozszerzeń (542)
- 14.11. Funkcje rozszerzeń MSXML (543)
- 14.12. Używanie wbudowanych rozszerzeń Saxona i Xalana (543)
- 14.13. Rozszerzanie XSLT za pomocą JavaScriptu (555)
- 14.14. Dodawanie funkcji rozszerzeń z użyciem Javy (560)
- 14.15. Dodawanie elementów rozszerzeń za pomocą Javy (566)
- 14.16. Używanie XSLT w Perlu (578)
- 14.17. Używanie XSLT w Javie (580)
- 15.0. Wprowadzenie (583)
- 15.1. Efektywne używanie xsl:message (584)
- 15.2. Śledzenie przetwarzania arkusza stylów
za pomocą jego dokumentu wejściowego (587)
- 15.3. Automatyzacja wstawiania danych wyjściowych debugera (592)
- 15.4. Umieszczanie osadzonych danych testów jednostkowych
w arkuszach stylów narzędzi (597)
- 15.5. Tworzenie testów jednostkowych (601)
- 15.6. Testowanie warunków brzegowych i błędów (603)
- 16.0. Wprowadzenie (607)
- 16.1. Tworzenie polimorficznego XSLT (613)
- 16.2. Tworzenie ogólnych funkcji agregujących elementy (619)
- 16.3. Tworzenie ogólnych funkcji ograniczonej agregacji (629)
- 16.4. Tworzenie ogólnych funkcji odwzorowania (635)
- 16.5. Tworzenie ogólnych generatorów zbiorów węzłów (642)