xslt tutorial xslt transformations elements with examples
W tym samouczku wyjaśniono, czym jest XSLT, jego transformacje, elementy i użycie na przykładzie. Obejmuje również znaczenie XPath w tworzeniu kodu konwersji XSLT:
Termin „XSLT” jest generowany przez połączenie dwóch słów, tj. „XSL” i „T”, „XSL” to skrócona forma „Extensible Stylesheet Language”, a „T” to krótka forma „Transformation”.
Zasadniczo XSLT jest językiem transformacji używanym do przekształcania / konwertowania źródłowych dokumentów XML na dokumenty XML lub na inne formaty, takie jak HTML, PDF, przy użyciu XSL-FO (Formatting Objects) itp.
Czego się nauczysz:
Wprowadzenie do XSLT
Transformacja odbywa się za pomocą procesora XSLT (jak Saxon, Xalan). Ten procesor XSLT pobiera jeden lub więcej dokumentów XML jako źródło z jednym plikiem XSLT, który zawiera zapisany kod XSLT, a dokumenty wynikowe / wyjściowe zostaną wygenerowane później, jak pokazano na poniższym diagramie.
Procesor XSLT analizuje źródłowe dokumenty XML, używając ścieżki X do nawigowania po różnych elementach źródłowych, począwszy od elementu głównego, aż do końca dokumentów.
Zalecana lektura => Wszystko, co musisz wiedzieć X-Path
Transformacja XSLT
Do rozpoczęcia transformacji potrzebujemy jednego dokumentu XML, na którym będzie działał kod XSLT, samego pliku kodu XSLT oraz narzędzia lub oprogramowania posiadającego procesor XSLT (do celów edukacyjnych można użyć dowolnej wersji bezpłatnej lub próbnej oprogramowania).
# 1) Kod XML
Poniżej znajduje się źródłowy kod XML, na którym będzie działać kod XSLT.
Nazwa pliku: Books.xml
XSLT Programmer's Reference Michael Kay Wrox 4th Head First Java Kathy Sierra O'reilly 1st SQL The Complete Reference James R. Groff McGraw-Hill 3rd
# 2) Kod XSLT
Poniżej znajduje się kod XSLT, na podstawie którego będzie uruchamiany na powyższym dokumencie XML.
Nazwa pliku: Books.xsl
Books:-
Book ID Book Name Author Name Publisher Price Edition
# 3) Wynik / Kod wyjścia
Poniższy kod zostanie utworzony po użyciu kodu XSLT w powyższym dokumencie XML.
Books:-
Book ID Book Name Author Name Publisher Price Edition 5350192956 XSLT Programmer's Reference Michael Kay Wrox 4th 3741122298 Head First Java Kathy Sierra O'reilly 1st 9987436700 SQL The Complete Reference James R. Groff McGraw-Hill 3rd
# 4) Wyświetl wynik / wyjście w przeglądarce internetowej
Książki:
Identyfikator książki | Nazwa książki | Imię autora | Wydawca | Cena £ | Wydanie |
---|---|---|---|---|---|
5350192956 | Dokumentacja programisty XSLT | Michael Kay | Wrox | 40 $ | 4 |
3741122298 | Head First Java | Kathy sierra | O'Reilly | 19 $ | 1 |
9987436700 | SQL Pełne odniesienie | James R. Groff | McGraw-Hill | 45 $ | 3 |
Elementy XSLT
Aby zrozumieć powyższy kod XSLT i on działa, musimy najpierw poznać różne elementy XSLT i ich atrybuty.
# 1) LUB
Każdy kod XSLT musi zaczynać się od elementu głównego albo
Atrybuty:
- @xmlns: xsl: Łączy dokument XSLT ze standardem XSLT.
- @wersja: Definiuje wersję kodu XSLT do parsera.
#dwa)
Ta deklaracja definiuje zestaw reguł stosowanych do przetwarzania lub transformacji wybranego elementu wejściowego dokumentu źródłowego do zdefiniowanych reguł elementu docelowego dokumentów wyjściowych.
Zasadniczo dostępne są dwa typy szablonów zgodnie z ich atrybutami:
(i) Nazwany szablon: Gdy element xsl: template zawiera atrybut @name, wówczas nazywa się to nazwanym szablonem.
Nazwane szablony są wywoływane przez element xsl: call-template.
(ii) Szablon meczu: Element xsl: template zawiera atrybut @match, który zawiera pasujący wzorzec lub XPath zastosowany w węzłach wejściowych.
Szablony dopasowania są wywoływane przez element xsl: Apply-template.
xsl: element szablonu musi mieć atrybut @ match lub @name albo oba. Element xsl: template, który nie ma atrybutu dopasowania, nie może mieć atrybutu trybu ani atrybutu priorytetu.
Napiszmy ponownie powyższy XSLT (
do) Kod XSLT oparty na szablonie dopasowania z. Zobacz poniżej zmieniony kod podświetlony na żółto i szaro, da ten sam powyższy wynik wyjściowy.
Books:-
Book ID Book Name Author Name Publisher Price Edition
Zobacz zrzut ekranu dla podświetlonego obszaru:
b) Kod XSLT oparty na nazwanym szablonie z. Zobacz poniżej zmieniony kod podświetlony na żółto i szaro, da ten sam powyższy wynik wyjściowy.
Books:-
Book ID Book Name Author Name Publisher Price Edition
Zobacz zrzut ekranu dla podświetlonego obszaru:
# 3)
Procesor znajdzie i zastosuje wszystkie szablony, dla których XPath jest zdefiniowane w atrybucie @select.
Atrybut @mode jest również używany, jeśli chcemy zapewnić więcej niż jeden sposób wyjścia z tą samą zawartością wejściową.
# 4)
Procesor wykona wywołanie szablonów posiadających wartość wewnątrz atrybutu @name (wymagane).
element służy do przekazywania parametrów do szablonu.
c ++ pytania i odpowiedzi
# 5)
Podaj ciąg / wartość tekstową dotyczącą wyrażenia XPath zdefiniowanego w atrybucie @select, zgodnie z definicją w powyższym kodzie.
To da wartość nazwy książki.
# 6): Powtórzenie
Spowoduje to przetworzenie instrukcji dla każdego zestawu węzłów (xpath zdefiniowanego w atrybucie @select (wymagany)) w posortowanej kolejności.
Powyższy kod oznacza dla każdego zestawu węzłów sklepu / księgi:
/ sklep / książka [1]
/ sklep / książka [2]
/ sklep / książka [3]
może być również użyty jako element potomny xsl: for-each do zdefiniowania kolejności sortowania.
# 7): Przetwarzanie warunkowe
Instrukcje xsl: if będą przetwarzane tylko wtedy, gdy wartość logiczna atrybutu @test będzie miała wartość true, w przeciwnym razie instrukcja nie zostanie oceniona i zostanie zwrócona pusta sekwencja.
2'> Condition True: Count of books are more than two.
Wynik: Warunek Prawda: liczba książek jest większa niż dwa.
Tutaj count () jest predefiniowaną funkcją.
# 8): Alternatywne przetwarzanie warunku
xsl: select ma wiele przypadków dla różnych warunków, które są testowane wewnątrz atrybutu @test atrybutu xsl: when elements, warunek testowy, który jest spełniony jako pierwszy spośród wszystkich xsl: when, zostanie przetworzony jako pierwszy i istnieje opcjonalny xls: w przeciwnym razie element, więc jeśli żaden z testów warunków nie spełni się, zostanie rozważony ten xsl: w przeciwnym razie.
Condition True: Count of book is one. Condition True: Count of book is two. Condition True: Count of book is three. No condition match.
Wynik: Warunek prawdziwy: liczba książek to trzy.
# 9)
xsl: copy działa na elemencie kontekstu, tj. jeśli jest to węzeł, skopiuje węzeł kontekstu do nowo wygenerowanego węzła i nie skopiuje elementów potomnych węzła kontekstu. Z tego powodu nazywa się to płytką kopią. W przeciwieństwie do elementu xsl: copy-of element xsl: copy nie ma atrybutu @ select.
W poniższym kodzie elementy kontekstu są kopiowane na wyjście, a wszystkie elementy podrzędne są wywoływane i kopiowane rekurencyjnie przez xsl: apply-template.
węzeł () | @ * Oznacza rekurencyjnie wszystkie węzły i wszystkie ich atrybuty.
Wynik: Spowoduje to skopiowanie wszystkich węzłów i atrybutów dokumentu źródłowego rekurencyjnie do dokumentu wyjściowego, tj. Utworzy dokładną kopię dokumentu źródłowego.
# 10)
xsl: copy-of domyślnie kopiuje sekwencję węzłów ze wszystkimi jego potomkami i atrybutami rekurencyjnie, z tego powodu jest to również nazywane kopiowaniem głębokim. Atrybut @select jest wymagany do oceny XPath.
Wynik: Spowoduje to skopiowanie wszystkich węzłów i atrybutów dokumentu źródłowego rekurencyjnie do dokumentu wyjściowego, tj. Utworzy dokładną kopię dokumentu źródłowego.
Oznacza kopię bieżącego węzła i aktualnego atrybutu.
jak otworzyć plik jar za pomocą Java w systemie Windows 10
#jedenaście)
Ten element służy do wpisywania komentarza do wyniku docelowego, każda treść tekstowa znajdująca się po stronie tego znacznika zostanie wydrukowana jako skomentowane wyjście.
Zostanie to wydrukowane na wyjściu jako węzeł komentarza.
Wynik:
# 12)
Spowoduje to wygenerowanie węzła tekstowego w dokumencie wynikowym, wartość wewnątrz xsl: text zostanie wydrukowana jako ciąg znaków do wyprowadzenia.
To jest
wiersz tekstu.
Wynik:
To jest
wiersz tekstu.
# 13)
Spowoduje to wygenerowanie elementu do dokumentu wynikowego o nazwie wymienionej w atrybucie @name. Atrybut nazwy jest atrybutem wymaganym.
Wynik: 5350192956
# 14)
Spowoduje to wygenerowanie atrybutu do elementu nadrzędnego w dokumencie wynikowym. Nazwa atrybutu jest zdefiniowana przez atrybut name, a wartość atrybutu jest obliczana przez XPath wymieniony w atrybucie select, jak podano w poniższym kodzie. Atrybut nazwy jest atrybutem wymaganym.
Wynik:
#piętnaście)
Ten element posortuje wybrany węzeł w kolejności odpowiednio w kierunku rosnącym lub malejącym. Węzeł lub XPath jest podawany za pomocą atrybutu @select, a kierunek sortowania jest definiowany przez atrybut @order.
W poniższym kodzie otrzymamy listę wszystkich książek według nazwy książki w kolejności alfabetycznej.
Books:-
Book ID Book Name Author Name Publisher Price Edition
Zobacz ten zrzut ekranu dla podświetlonego obszaru:
Wynik: Poniższa lista zawiera tytuły książek w kolejności alfabetycznej, czyli rosnącej.
Książki:
Identyfikator książki | Nazwa książki | Imię autora | Wydawca | Cena £ | Wydanie |
---|---|---|---|---|---|
3741122298 | Head First Java | Kathy sierra | O'Reilly | 19 $ | 1 |
9987436700 | SQL Pełne odniesienie | James R. Groff | McGraw-Hill | 45 $ | 3 |
5350192956 | Dokumentacja programisty XSLT | Michael Kay | Wrox | 40 $ | 4 |
# 16)
Ten element deklaruje zmienną, która zawiera w sobie wartość. Zmienna może być zmienną globalną lub zmienną lokalną. Nazwa zmiennej jest definiowana przez atrybut @name, a wartość, którą ta zmienna będzie przechowywać, jest definiowana przez atrybut @select.
Dostęp do zmiennej globalnej jest globalny, tzn. Zmienne można wywoływać w dowolnym elemencie i pozostawać dostępne w arkuszu stylów.
Aby zdefiniować zmienną globalną, wystarczy zadeklarować, że obok głównego elementu arkusza stylów, jak pokazano w kodzie poniżej, podświetlonym na żółto, zmienna „SecondBook” jest zmienną globalną i zawiera nazwę drugiej książki.
Dostęp do zmiennej lokalnej jest lokalny dla elementu, w którym jest zdefiniowana, tj. Zmienna ta nie byłaby dostępna poza elementem, w którym jest zdefiniowana, jak pokazano w poniższym kodzie, który jest podświetlony na szaro, zmienna „pierwsza książka” jest zmienna lokalna i zawiera nazwę pierwszej książki.
Aby wywołać zmienną globalną zmienną lokalną, przed nazwą zmiennej używany jest symbol dolara ($), jak pokazano poniżej na żółto podświetlony $ .
First Book Name: Second Book Name:
Zobacz zrzut ekranu dla podświetlonego obszaru:
Wynik:
First Book Name: Dokumentacja programisty XSLT
Nazwa drugiej książki: Head First Java
# 17)
Ten element służy do deklarowania kluczy dla pasujących wartości wzorca do tego konkretnego klucza.
Nazwa jest dostawcą tego klucza według atrybutu @name („ pobierz wydawcę „), Która jest później używana wewnątrz funkcji key (). Atrybut @match jest dostarczany do węzła wejściowego indeksu przez wyrażenia XPath („ książka „), Jak na poniższym żółtym podświetleniu @match służy do indeksowania wszystkich książek dostępnych w sklepie.
W odniesieniu do atrybutu @match używany jest atrybut @use, który deklaruje węzeł w celu pobrania wartości dla tego klucza za pomocą wyrażenia XPath („wydawca”).
Załóżmy teraz, że jeśli potrzebujemy szczegółów książki, która jest publikowana tylko przez wydawcę „Wrox”, możemy łatwo uzyskać tę wartość za pomocą elementu xsl: key, tworząc parę klucz-wartość.
klucz („get-publisher”, „Wrox”) Klucz () przyjmuje dwa parametry, pierwszy to nazwa klucza, czyli w tym przypadku „get-publisher”, a drugi to ciąg znaków, który należy przeszukać, czyli w naszym przypadku „Wrox”.
Books:-
Book ID Book Name Author Name Publisher Price Edition
Zobacz zrzut ekranu dla podświetlonego obszaru:
Wynik:
Books:-
Book ID Book Name Author Name Publisher Price Edition 5350192956 XSLT Programmer's Reference Michael Kay Wrox 4th
Wynik / widok HTML:
Książki:
Identyfikator książki | Nazwa książki | Imię autora | Wydawca | Cena £ | Wydanie |
---|---|---|---|---|---|
5350192956 | Dokumentacja programisty XSLT | Michael Kay | Wrox | 40 $ | 4 |
# 18)
Ten element jest używany do celów debugowania w programowaniu XSLT. Element wyświetla dane wyjściowe na standardowym ekranie wyjściowym aplikacji.
Atrybut @terminate jest używany z dwiema wartościami „tak” lub „nie”, jeśli wartość jest ustawiona na „tak”, parser kończy pracę natychmiast, gdy tylko warunek testu zostanie spełniony, aby komunikat został wykonany.
Aby to zrozumieć, załóżmy, że jeśli w naszym dokumencie wejściowym element ceny zostanie przypadkowo opróżniony, jak w poniższym kodzie, to przetwarzanie powinno zostać natychmiast zatrzymane, gdy tylko procesor napotka pusty element ceny, który można łatwo osiągnąć za pomocą xsl: wiadomość wewnątrz warunku testu if, jak w poniższym kodzie XSLT.
Alert debuggera jest wyświetlany na standardowym ekranie aplikacji: Przetwarzanie zakończone przez xsl: komunikat w linii 21.
Wprowadź kod XML:
SQL The Complete Reference James R. Groff McGraw-Hill 3rd
Zobacz zrzut ekranu dla podświetlonego obszaru:
Kod XSLT:
Books:-
Book ID Book Name Author Name Publisher Price Edition Terminating: price element is empty.
Zobacz zrzut ekranu dla podświetlonego obszaru:
Wynik: Należy pamiętać, że gdy parser napotka pustą metkę z ceną, natychmiast przerywa przetwarzanie, z powodu którego tagi zamykające, i nie znajdzie się na końcu pliku.
Books:-
Book ID Book Name Author Name Publisher Price Edition 5350192956 XSLT Programmer's Reference Michael Kay Wrox 4th 3741122298 Head First Java Kathy Sierra O'reilly 1st Zobacz zrzut ekranu dla podświetlonego obszaru:

# 19) i
element definiuje parametr do szablonu, jeśli jest zdefiniowany wewnątrz. Można go zdefiniować wewnątrz jako parametr globalny lub wewnątrz jako parametr lokalny tego szablonu.
Wartość jest przekazywana / dostarczana, gdy szablon jest wywoływany przez byor.

przekazuje wartość parametru zdefiniowanego wewnątrz szablonu. Atrybut taki jak @name zawiera nazwę parametru, który powinien pasować do atrybutu @name elementu. Atrybut @Select służy do ustawiania wartości tego parametru.

Do pobrania wartości parametru służy znak dolara ($) zmiennej.

Źródłowy kod XML:
XSLT Programmer's Reference Michael Kay Wrox 4th Head First Java Kathy Sierra O'reilly 1st SQL The Complete Reference James R. Groff McGraw-Hill 3rd
Kod XSLT:
List of Books Name :-
Book Name:
Zobacz zrzut ekranu dla podświetlonego obszaru:

Wynik Wynik:
List of Books Name :-
Book Name: XSLT Programmer's Reference
Book Name: Head First Java
Book Name: SQL The Complete Reference