Główny element XML. XML to darmowy, rozszerzalny język znaczników. XML nie zastępuje HTML.

Wstęp

Rozważ prosty przykład pliku XML (ex01.xml).

„Uwagi dotyczące XSL” Leonow Igor Wasiliewicz

Jeśli otworzymy ten plik w przeglądarce Internet Explorer, zobaczymy ten sam tekst, co powyżej, wraz ze wszystkimi tagami i informacjami o usłudze. Ale nie potrzebujemy tagów i informacji serwisowych! Chcemy widzieć tylko te informacje, które są istotne, a za pomocą tagów kontrolujemy wygląd tych informacji. To zadanie można rozwiązać łatwo i prosto: musisz dodać szablon transformacji - plik XSL - do pliku XML.

Ten element „adresu” jest prostym typem z ograniczeniem. Ten przykład definiuje również element o nazwie „adres”. Wartość musi mieć dokładnie osiem znaków. Ten przykład definiuje inny element o nazwie „hasło”. Ten element „hasło” jest prostym typem z ograniczeniem. Wartość musi mieć co najmniej pięć i nie więcej niż osiem znaków.

Ograniczenia dotyczące typów danych

Co to jest złożony element

Istnieją cztery rodzaje elementów złożonych. Puste elementy elementów, które zawierają tylko inne elementy, które zawierają tylko elementy tekstowe, które zawierają zarówno inne elementy, jak i tekst. Notatka. Każdy z tych elementów może również zawierać atrybuty!

Przepiszmy nasz plik XML w następującej postaci (ex01-1.xml).

„Uwagi dotyczące XSL” Leonow Igor Wasiliewicz „Uwagi dotyczące XSL” Leonow Igor Wasiliewicz

Jak zdefiniować złożony element

Jeśli użyjesz powyższej metody, wiele elementów może odnosić się do tego samego typu złożonego, np. Możesz również utworzyć element typu złożonego w istniejącym typie złożonym i dodać kilka elementów. Pusty element złożony może zawierać atrybuty; Ale między tagami otwierającymi i zamykającymi nie może być żadnej treści.

Definiowanie złożonych typów dla pustych elementów

Powyższy element „product” nie zawiera treści. Aby zdefiniować typ bez zawartości, musimy zdefiniować typ, który dopuszcza tylko elementy w swojej zawartości, ale nie deklarujemy żadnego elementu, np. W ten sposób można jednak zadeklarować, że element produktu będzie bardziej zwarty.

Utwórzmy plik XSL ex01-2.xsl . Tekst pliku pokazano poniżej.

Jeśli teraz otworzymy plik ex01-2.xsl w przeglądarka internetowa Odkrywco, wynik będzie inny.

Leonow Igor Wasiliewicz

Złożone typy składające się tylko z elementów

Typ złożony zawierający tylko element zawiera element, który zawiera tylko inne elementy.

Zdefiniuj typy złożone za pomocą samych elementów

Oznacza to, że pewne elementy muszą pojawić się w tej kolejności w elemencie „osoba”. Złożone elementy tekstowe. Złożony element tekstowy może zawierać zarówno atrybuty, jak i tekst.

Ustaw złożony element tekstowy

Mieszane typy z mieszaną zawartością

Mieszany element typu złożonego może zawierać atrybuty, elementy i tekst. Zdefiniuj typy złożone z mieszaną zawartością. Poniższy schemat deklaruje element „litera”. Wskaźniki typu złożonego. Mamy siedem rodzajów wskaźników.

„Uwagi dotyczące XSL”

Zwróćmy teraz uwagę na punkt, który jest kluczowy dla twórców baz danych. Informacje na stronie XML zwykle pojawiają się w wyniku zapytania do bazy danych. Wysyłanie zapytań do bazy danych w środowisku wielu użytkowników jest bardzo kosztowną operacją. Załóżmy teraz, że nie mamy XML i generujemy standardowe statyczne strony HTML. W tym przypadku, aby rozwiązać problem prostej transformacji zewnętrznej reprezentacji informacji, na przykład zmienić sortowanie, mamy dwa sposoby rozwiązania problemu: wykonanie zapytania i zapisanie wyników w jakimś tymczasowym buforze na serwerze lub za każdym razem, gdy zmienia się reprezentacja zewnętrzna, wykonaj nowe zapytanie i odbuduj stronę HTML.

Wskaźniki kolejności służą do określenia kolejności, w jakiej występują pozycje. Wskaźnik domyślnie wskazuje, że elementy podrzędne mogą być wyświetlane w dowolnej kolejności i każdy z nich musi wystąpić tylko raz. Za pomocą wskaźnika można określić, że wskaźnik ma wartość 0 lub 1 i może wynosić tylko 1. Wskaźnik wskazuje, że może wystąpić element potomny lub inny.

Wskaźnik wskazuje, że elementy podrzędne powinny być wyświetlane w określonej kolejności. Wskaźniki występowania służą do wskazywania, jak często dany element może wystąpić. Wskaźnik wskazuje maksymalną liczbę razy, jaką może mieć element.

Pierwsza metoda wymaga czasochłonnego programowania, druga metoda znacząco zwiększa obciążenie serwera bazodanowego, którego wydajność jest często wąskim gardłem systemu - użytkownik zawsze chce szybciej uzyskać wyniki.

XML i XSL to kompletne rozwiązanie opisanego powyżej problemu. W rzeczywistości strona XML jest tymczasowym buforem wyników zapytania. Tylko zamiast niestandardowego i czasochłonnego programowania stosujemy teraz standardowy mechanizm XSL.

Powyższy przykład określa, że ​​element „filename” może wystąpić co najmniej raz i nie więcej niż dziesięć razy w elemencie „person”. Wskaźnik określa minimalną liczbę wystąpień elementu. W ramach tego elementu zdefiniowano kilka elementów „prywatnych”.

Wskaźniki grupowe służą do definiowania grup powiązane przedmioty. Elementy grupy definiuje się deklaracją grupy, np. Po zdefiniowaniu grupy można odnieść się do niej np. w definicji innej grupy lub typu złożonego.

Jest jeszcze jedna uwaga, która może być ważna dla programistów baz danych. Większość nowoczesnych DBMS może sformatować wyniki zapytania do bazy danych jako plik XML. Oznacza to, że budując interfejs użytkownika w ramach technologii XML i XSL, uzyskujemy pewną niezależność od dostawcy DBMS. W zakresie organizacji wyjścia - prawie całkowita samodzielność. A ta część jest bardzo duża w większości systemów aplikacji zorientowanych na bazy danych. Oczywiście oprócz danych wyjściowych jest też przetwarzanie danych wejściowych i logiki biznesowej po stronie serwera, ale tutaj trzeba będzie poszukać innych rozwiązań.

Po zdefiniowaniu grupy atrybutów można odnieść się do niej na przykład w definicji innej grupy lub typu złożonego. W tym przypadku możemy to zrobić, nawet jeśli autor powyższego schematu nigdy nie zadeklarował elementu „children”! W takim przypadku możemy to zrobić, nawet jeśli autor powyższego schematu nigdy nie zadeklarował żadnego atrybutu „płeć”! Załóżmy, że mamy dwóch użytkowników różnych krajów: Anglia i Norwegia.

Blokowanie elementów

Najpierw deklarujemy element klucz, a następnie deklarujemy inne elementy, które są zamiennikami elementu klucza. Aby zapobiec nakładaniu się innych elementów na określony element, użyj bloku. Wyszukaj typ elementu, aby zobaczyć ten sam lub pochodzący z typu elementu kluczowego. Jeśli typ elementu zastępczego jest taki sam jak typ elementu, nie musisz określać.

Pierwsze kroki

Przeanalizujmy teraz bardziej szczegółowo pierwszy przykład. Zapamiętajmy tekst.

„Uwagi dotyczące XSL” Leonow Igor Wasiliewicz

Pierwsza linia informuje przeglądarkę, że plik jest w formacie XML. Atrybut wersji jest wymagany. Atrybut kodowania jest opcjonalny, ale jeśli masz w tekście rosyjskie litery, musisz wstawić ten atrybut, w przeciwnym razie plik XML po prostu nie zostanie przetworzony - otrzymasz komunikat o błędzie.

XML to darmowy, rozszerzalny język znaczników

Elementy globalne to te, które są bezpośrednimi dziećmi elementu „schemat”! Elementy lokalne to elementy zagnieżdżone w innych elementach! Dowiesz się również, że schemat można napisać na wiele różnych sposobów. Ten element posiada atrybut i zawiera inne elementy, dlatego traktujemy go jako typ złożony. Uwaga: Deklaracje atrybutów zawsze muszą się kończyć.

Tworzenie dokumentu XML

Poprzednia metoda projektowania jest bardzo prosta, ale bardzo trudna do odczytania i utrzymania, gdy dokumenty są złożone! Oto nowy widok pliku schematu. Trzecia metoda projektowania definiuje klasy i typy, co pozwala nam na ponowne wykorzystanie definicji elementów.

Poniższe wiersze stanowią treść pliku XML. Składa się z elementów, które razem tworzą strukturę drzewiastą. Elementy są identyfikowane za pomocą tagów i mogą być zagnieżdżane w sobie.

Elementy mogą posiadać atrybuty, których wartości również mogą być przetwarzane zgodnie z szablonem.

Na najwyższym poziomie pliku XML zawsze znajduje się jeden element. To znaczy plik widoku

Oto nowa forma pliku schematu. Wskazuje, że wartość elementu lub atrybutu jest ciągiem. Element ograniczenia jest często używany do nakładania ograniczeń na elementy. Zwróć uwagę na następujące linie z powyższego diagramu. Oznacza to, że wartość elementu lub atrybutu musi być ciągiem i musi mieć dokładnie sześć znaków, a każdy znak musi być liczbą z zakresu od 0 do .

Zacznij tworzyć plik XML

Typy danych typu String są używane dla wartości zawierających łańcuchy. Typ danych ciągu może zawierać znaki, podziały wierszy, powrót karetki i znaki tabulacji. Poniżej znajduje się przykład deklarowania ciągu w schemacie. Element w twoim dokumencie może wyglądać tak.

„Uwagi dotyczące XSL” Leonow Igor Wasiliewicz „Wprowadzenie do CSP” Leonow Igor Wasiliewicz

nie będą przetwarzane przez przeglądarkę. Aby przekonwertować do prawidłowego pliku XML, musisz dodać tagi elementów najwyższego poziomu, na przykład

„Uwagi dotyczące XSL” Leonow Igor Wasiliewicz „Wprowadzenie do CSP” Leonow Igor Wasiliewicz

Ograniczenia dotyczące typów danych łańcuchowych

Typ danych tokenu jest również pochodną typu danych ciągu. Poniżej znajduje się przykład deklaracji znacznika w schemacie. Ograniczenia, których można używać z typami danych typu string. Typy danych Data i godzina są używane dla wartości zawierających datę i godzinę.

Typ danych data służy do określenia daty. Poniżej znajduje się przykład deklarowania daty w schemacie. Typ danych czas jest używany do wskazania czasu. Wszystkie komponenty są wymagane! Poniżej znajduje się przykład instrukcji polecenia na diagramie. Typ danych czasu trwania służy do wskazywania przedziału czasu.

Pamiętaj, że w nazwach tagów rozróżniana jest wielkość liter. Możesz przeczytać więcej na ten temat w każdej książce o XML - elementom i atrybutom w tych książkach poświęca się sporo uwagi.

XSL+XSLT

Przejdźmy teraz do szablonu transformacji - do pliku XSL. Zadaniem pliku XSL jest przekształcenie drzewa pliku XML w inne drzewo, które na przykład będzie odpowiadać formatowi HTML i może być wyświetlane na ekranie przeglądarki z uwzględnieniem formatowania, wyboru czcionki itp.

Dobrze uformowane dane

Poniżej znajduje się przykład instrukcji czasu trwania w schemacie. Powyższy przykład określa okres pięciu lat. Powyższy przykład określa okres pięciu lat, dwóch miesięcy i dziesięciu dni. Powyższy przykład określa okres pięciu lat, dwóch miesięcy, dziesięciu dni i 15 godzin.

Ograniczenia typu danych

W powyższym przykładzie określono okres 15 godzin. Powyższy przykład określa okres krótszy niż 10 dni. Ograniczenia, których można używać z typami danych dat. Do przechowywania liczb używane są dziesiętne typy danych. Typ danych dziesiętnych jest używany do wskazania wartości liczbowej.

Aby przeglądarka wykonała niezbędne przekształcenie, musisz w pliku XML podać łącze do pliku XSL

Rozważ teraz tekst pliku XSL

Pierwszy wiersz pliku zawiera znacznik elementu xsl:stylesheet. Atrybuty elementu to numer wersji i odwołanie do przestrzeni nazw. Te atrybuty elementu xsl:stylesheet są wymagane. W naszym przypadku przestrzeń nazw to wszystkie nazwy elementów i ich atrybuty, których można użyć w pliku XSL. W przypadku plików XSL odniesienie do przestrzeni nazw jest standardowe.

Poniższy przykład to deklaracja dziesiętna w schemacie. Maksymalna liczba cyfr dziesiętnych, jaką możesz określić, to 18! Typ danych całkowitych służy do wskazywania wartości liczbowej bez składnika ułamkowego. Poniższy przykład to instrukcja typu integer w schemacie.

Ograniczenia dotyczące numerycznych typów danych

Element w twoim dokumencie może wyglądać tak. Ograniczenia, których można używać z liczbowymi typami danych. Poniższy przykład to instrukcja bramki logicznej w obwodzie. Dane binarne służą do wyrażania danych binarnych. Mamy dwa rodzaje danych binarnych.

Zauważ, że plik XSL jest typem pliku XML. Nie zawiera danych użytkownika, ale jego format jest taki sam. Plik zawiera element xsl:stylesheet najwyższego poziomu, po którym następuje drzewo reguł transformacji.

W tym dokumencie nie wyjaśnimy szczegółowo, co oznacza każdy element pliku XSL. Podamy różne przykłady i pokażemy wynik w każdym przykładzie. Czytelnik będzie mógł samodzielnie odwzorować różne elementy pliku XSL oraz przekształcenia źródłowego pliku XML zainicjowane przez te elementy z informacjami o użytkowniku.

Ograniczenia dotyczące różnych typów danych

Ograniczenia, których można używać z innymi typami danych. To język: oznacza to, że ten format pliku ma przekazywać informacje. To język znaczników: oznacza to, że dane są powiązane z „tagami”, które pasują do ich zawartości. Na przykład u Emile Zola „Emile” byłoby podane jako imię i „Zola” jako nazwisko. To język rozszerzalny: oznacza dwie rzeczy.

Zgodnie z jego potrzebami można definiować i wykorzystywać „etykiety”, które, jak sobie życzysz, po zdefiniowaniu zestawu etykiet, nawet przez kogoś innego, można rozszerzyć dodając własne kreacje. Przyjrzymy się jego różnym składnikom. Ta pierwsza linia to plik prologu.

W przyszłości teksty w plikach XML i XSL będą prezentowane w czerni i bieli. Zawsze możesz otworzyć prawdziwy plik i zobaczyć wszystko w kolorze. W razie potrzeby skomentuj łącze do pliku XSL. Składnia komentarza jest następująca: . Symbole — nie można wstawiać do tekstu komentarza.

W pierwszym przykładzie zobaczyliśmy, jak element xsl:value-of może zostać użyty do wyświetlenia zawartości elementu (tekstu zawartego między tagami) w formacie HTML. Teraz zobaczymy, jak możemy użyć tego samego elementu do wywnioskowania wartości atrybutu elementu.

Tutaj zajmujemy się skrótami, o których mówiliśmy we wstępie. To elementy i atrybuty pozwalają zakwalifikować dane i nadać im znaczenie.

  • Niepusty element zaczyna się od otwartego znacznika, a kończy znacznikiem końcowym.
  • Pusty element zawiera tylko jeden tag, zwany tagiem „samozamykającym się”.
  • To jest przykład elementu identyfikacyjnego: charakteryzuje się tagiem.
Pomiędzy etykietą otwierającą i zamykającą niepustego elementu mogą znajdować się inne elementy. Dotyczy to większości elementów, takich jak naukowiec, na przykład: wcięcie kodu podkreśla hierarchiczną relację elementów.

Rozważ następujący plik XML ex02-1.xml

W tym pliku informacje są przechowywane nie w treści elementów, ale w postaci wartości atrybutów. Wygląda na to plik ex02-1.xsl

Ta hierarchiczna struktura tworzy strukturę drzewa. Oto element naukowy. Kiedy chcesz określić, co zawiera element, możesz umieścić atrybut w otwierającym znaczniku. Na przykład element date ma dwa atrybuty o nazwach narodziny i śmierć. Atrybut ma nazwę i wartość. Na przykład atrybutem imienia drugiego naukowca jest Izaak.

Wreszcie, kolejność, w jakiej atrybuty są zapisywane w znaczniku otwierającym, nie ma znaczenia: atrybuty ostatniego wyuczonego elementu są odwrócone w stosunku do pierwszych dwóch, ale te dwie formy są ściśle równoważne. Na przykład ostatnie dwa obiekty mogą być użyte w wartościach atrybutów.

. , .

Zwróć uwagę na składnię odwołania do atrybutu elementu - //pies /@ nazwać . Nazwa elementu i nazwa atrybutu są oddzielone parą znaków „/@ ”. Pozostała składnia jest taka sama, jak w przypadku odwoływania się do zawartości elementu.

Gdy treść może zawierać wiele obiektów, pisanie ich może być żmudne. Te zasady są następujące. Element główny musi być unikalny. . Ponadto może być pożądane propagowanie typu dokumentu lub równoległa praca nad danym dokumentem. Z tych powodów konieczne jest ustalenie ogólnych reguł, które precyzyjnie definiują atrybuty i atrybuty, a także ich hierarchię, czyli reguły „gramatyczne”. Są na to trzy główne metody. taka gramatyka i wskazuje, że mówi się, że jest „prawidłowa”.

Wynik wygląda tak:

Pies:Piłka. 18 kg, czerwona z czarnymi znaczeniami.

Zwróćmy teraz naszą uwagę na następny punkt. W pliku XSL nie użyliśmy w żaden sposób elementu tutoriala. W rzeczywistości możesz użyć pełnej ścieżki. Przepiszmy nasz plik XML, zwiększając głębokość drzewa (ex02-2.xml)

Do tego pliku został dodany szablon transformacji ex03-1.xsl.

Przyjrzyjmy się bliżej temu wzorowi. Oto jego tekst.

Pierwsze dwie linie szablonu są już znajome. Następne sześć wierszy to wiersz zawierający nagłówki kolumn tabeli. Konstrukcja do wyodrębniania tekstu nagłówków tabel jest Ci już znana. Ale dziewiąta linia jest nowa:

Ten element szablonu pozwala wybrać i wyświetlić wszystkie grupy informacji, do których pełna ścieżka jest określona przez listę znaczników „tutorial/zwierzęta/psy/pies” . Należy pamiętać, że ścieżka jest ustawiona całkowicie, żaden z tagów nie może zostać pominięty. Ponadto informacje o naszych psach znajdują się w komórkach tabeli. W przeciwieństwie do pierwszych przykładów, ścieżka do odpowiednich informacji jest również całkowicie określona. Spróbujmy na przykład nieco inaczej umieścić informację o nicku ex03-2.xml :

Piłka

Jeśli umieścimy link w odpowiednim pliku XSL , wtedy nie zobaczymy żadnego pseudonimu w odpowiedniej kolumnie. Link musi być kompletny - . Zachęcamy do samodzielnego eksperymentowania z plikiem ex03-2.xsl. Prawidłowy wynik pokazano poniżej.



#CCCCCC

Znamy już element xsl:if i funkcję position(). Operator mod daje nam resztę z dzielenia przez 2. A element xsl:attribute pozwala nam dynamicznie podstawiać różne atrybuty do pliku wynikowego. To bardzo potężny element, przyjrzymy się kolejnemu wykorzystaniu tego elementu w następnym akapicie. A teraz dla kompletności przedstawiamy tabelę wyników.

Przezwisko

Kolor

czerwony z czarnymi plamami

biały z czarnymi plamami

biało-szary

Przezwisko

Kolor

biało-szary

biały z czarnymi plamami

czerwony z czarnymi plamami

Ciekawsze wyniki uzyskamy, jeśli spróbujemy posortować tabelę według kolumny „Waga”. Najpierw spróbujmy zrobić to analogicznie do poprzedniego przykładu - zamienimy atrybut order-by="dogName" na order-by="dogWeight" . Wynik jest pokazany poniżej (ex03-4.xml , ex03-4.xsl).

Przezwisko

Kolor

biały z czarnymi plamami

czerwony z czarnymi plamami

biało-szary

Tabela jest rzeczywiście posortowana według kolumny "waga", ale nie jest to sortowanie numeryczne, ale sortowanie łańcuchowe! Aby przeglądarka postrzegała wartości jako liczby, należy jej o tym powiedzieć - zamiast order-by="dogWeight" należy wpisać order-by="number(dogWeight)" . Teraz otrzymaliśmy poprawny wynik (ex03-5.xml , ex03-5.xsl).

Przezwisko

Kolor

biało-szary

biały z czarnymi plamami

czerwony z czarnymi plamami

Podajmy teraz przykład sortowania według kilku kolumn. Poszczególne elementy w atrybucie order-by muszą być oddzielone znakiem „;” - order-by="liczba(waga psa); nazwa psa"(ex03-6.xml , ex03-6.xsl). Tabela jest pokazana poniżej.

Przezwisko

Kolor

biały z czarnymi plamami

biało-szary

czerwony z czarnymi plamami

Poniższy przykład działa tylko pod parserem XML w wersji 3. Sortuje wiersze według jednej kolumny, nazwy psa. Ten przykład został już podany powyżej, ale teraz używamy nowej składni (ex03-7.xml , ex03-7.xsl).

Zwróćmy uwagę na różnicę.

Podczas korzystania z nowej składni używane jest odwołanie do innej przestrzeni nazw

< xsl : stylesheet version ="1.0" xmlns : xsl =" http :// www . w 3. org /1999/ XSL / Transform ">

To bardzo ważna kwestia i nigdy nie należy jej pomijać.

Usunęliśmy również atrybut order-by z elementu xsl:for-each i dodaliśmy kolejny element

Jeśli element xsl:sort jest obecny w elemencie xsl:for-each, musi zawsze pojawić się bezpośrednio po elemencie xsl:for-each. Składnia elementu xsl:sort jest dość oczywista. Wykorzystuje dwa atrybuty: atrybut order - sposób sortowania (w porządku rosnącym lub malejącym) oraz atrybut select - nazwę pola, według którego ma być sortowane. Jeśli musimy sortować według pierwszego elementu, jak w tym przykładzie, to zamiast "dogName" możemy wstawić kropkę - ".", dla pozostałych elementów należy podać jego nazwę, np. "dogColor", jeśli trzeba posortować rekordy według koloru psa. W rzeczywistości może istnieć pięć atrybutów - select , lang , data-type , order i case-order , ale nie będziemy tutaj brać pod uwagę wszystkich tych atrybutów, ponieważ tutaj nie dążymy do pełnego opisu wszystkich użytych elementów w XSL i ich atrybuty.

Przezwisko

Kolor

biało-szary

biały z czarnymi plamami

czerwony z czarnymi plamami

Używając nowej składni, łatwo jest przejść z sortowania rosnącego na malejące (ex03-8.xml , ex03-8.xsl

Różnica tkwi w jednej linii

Zmieniliśmy wartość atrybutu order - wartość rosnąco została zastąpiona malejąco .

Tabela wyników jest pokazana poniżej.

Przezwisko

Kolor

czerwony z czarnymi plamami

biały z czarnymi plamami

biało-szary

Pokażemy teraz sortowanie według kilku pól (ex03-9.xml , ex03-9.xsl). Ten przykład działa tylko pod parserem XML w wersji 3.

W tym przykładzie mamy dwie linie z elementem xsl:sort.


Rzędy są sortowane najpierw według wagi psa, a następnie według ich imion w kolejności alfabetycznej. Należy pamiętać, że aby sortowanie odbywało się w kolejności numerycznej, dodaliśmy atrybut data-type do elementu xsl:sort. Tabela wyników jest pokazana poniżej.

Przezwisko

Kolor

wilczyca

ciemno szary

biały z czarnymi plamami

biało-szary

czerwony z czarnymi plamami

Zamieniając wartość kolejności według atrybutu na malejący , możemy łatwo pogrupować wpisy dotyczące psów o tej samej wadze tak, aby nazwy były w odwrotnej kolejności alfabetycznej. Możesz łatwo sam zbudować odpowiedni przykład.






W tym przykładzie tabela wyników jest całkowicie podobna do poprzedniej.

Pełne korzyści nowej składni są widoczne podczas korzystania z funkcji.

Rozważmy następujący przykład (ex04-3.xml , ex04-3.xsl). W tym przykładzie użyto funkcji position() do określenia numeru sekwencyjnego fragmentu w źródłowym pliku XML.

Odpowiedni element xsl:if.

< xsl : if test =" position ()<3">

Wynik.

Zademonstrujmy teraz użycie bardziej interesujących funkcji — i zawiera(string,anySubstring) . Funkcjonować start-with(string,startSubstring) sprawdza, czy ciąg znaków zaczyna się od podciągu startSubstring . Przykład - ex04-4.xml , ex04-4.xsl).

Składnia elementu xsl:if.

W tym elemencie użyliśmy zmiennych. Zmienne wartości były inicjowane wcześniej

< xsl : variable name =" varStartWith ">< xsl : value - of select ="// letter "/>

Zmienna varStartWith

reprezentuje podciąg, od którego muszą zaczynać się wymagane przez nas pseudonimy. Nie zmienia się, więc jest inicjowany przed pętlą. Zmienna varDogName zawiera imię psa, zmienia się na każdym kroku pętli i odpowiednio jest inicjowana w ciele pętli.

Element letter w pliku XML zawiera literę „T”.

Komentarz.
Niestety nie mogłem znaleźć innego sposobu na przekazanie wartości elementów pliku XML do funkcji start-with. Można się z tym jakoś pogodzić. Ale w ten sam sposób nie było możliwe użycie rosyjskich liter w plikach XSL, więc podciąg do porównania musiał być uformowany w bardzo sztuczny sposób, wyodrębniając go z pliku XML. Ciężko się z tym pogodzić, więc jeśli uda mi się znaleźć bardziej elegancką drogę, to zmienię przykład, a jeśli któryś z Czytelników znajdzie taki sposób, proszę o napisanie do mnie o tym. Chociaż w rzeczywistych przykładach takie podciągi są zwykle wprowadzane przez użytkownika w formularzach wyszukiwania, być może znaleziona metoda jest całkiem akceptowalna dla praktycznych potrzeb.

Wynik.

Funkcja zawiera(string,anySubstring) sprawdza, czy ciąg znaków zawiera podciąg anySubstring . Przykład - ex04-5.xml , ex04-5.xsl .

Składnia elementu xsl:if.

Ten przykład jest całkowicie podobny do poprzedniego. Element letter w pliku XML zawiera literę „o”.

Wynik.

Dwa elementy xsl:if zagnieżdżone w sobie dają efekt operatora AND (ex04-6.xml , ex04-6.xsl).

Odpowiedni fragment pliku XSL.



...

Wynik.

Możesz również uzyskać efekt operatora OR. Aby to zrobić, musimy dołączyć dwie pętle, z których każda tworzy własny wybór (ex04-7.xml , ex04-7.xsl).

Odpowiedni fragment pliku XSL.




















Wynik.

Przezwisko

Kolor

wilczyca

ciemno szary

biały z czarnymi plamami

czerwony z czarnymi plamami

Poniżej znajduje się wiersz, w którym dokonaliśmy niezbędnych zmian.

xsl:for-each select="tutorial/animals/dogs/dog" order-by="liczba(waga psa); dogName;">

I tabela wyników.

Widać, że w tabeli pozostały tylko te psy, których waga przekracza 10 kg, a pierwszym jest Sharik, którego waga jest mniejsza.

Wszystkie dalsze przykłady w tej sekcji działają tylko pod parserem XML w wersji 3.

Bardziej elastyczne opcje zapewnia nowa składnia (ex04-2.xml , ex04-2.xsl). Zauważ, że nowa składnia nie obsługuje atrybutu order-by w elemencie xsl:for-each, zamiast tego wstawiliśmy dwa elementy xsl:sort.


Dodatkowo przenieśliśmy warunek filtrowania do osobnego elementu xsl:if.

Nie zapomnij dołączyć końcowego tagu elementu xsl:if.


Przezwisko

Kolor

biało-szary

czerwony z czarnymi plamami

Jeśli sortowanie nie jest wymagane, dwa elementy xsl:if można wstawić do jednego elementu xsl:for-each.

Element XSL:IF - poprawiający wygląd tabel

Element xsl:if może służyć nie tylko do filtrowania wybranych wierszy. Oczywiście może być również przydatny w wielu innych obszarach. W tej sekcji przyjrzymy się przykładowi wykorzystania elementu xsl:if do poprawienia wyglądu tabeli. Jednocześnie zademonstrujemy faktyczne użycie funkcji position(). Użyjemy tej funkcji do zmiany koloru parzystych i nieparzystych wierszy tabeli (ex04-8.xml , ex04-8.xsl).

Fragment pliku XSL, który odpowiada za wymagane striping.

Przezwisko

Kolor

czerwony z czarnymi plamami

biały z czarnymi plamami

biało-szary

Dynamiczne tworzenie atrybutów na przykładzie parametrów linku w tagu

Załóżmy teraz, że w każdym wierszu tabeli musimy zrobić link do jakiejś strony i przekazać do tej strony dwa parametry - imię i wagę psa. Oczywiste jest, że dla każdej linii parametry te są inne i nie można ich zapisać wprost w pliku XSL. Jednak zadanie to można łatwo wykonać za pomocą elementu xsl:attribute.

Nie będziemy tu budować specjalnego przykładu, ograniczymy się do odpowiedniego fragmentu pliku XSL.




DisplayDetails.html?dogName= select="nazwa psa"/> &piesWaga=
Aby wyświetlić więcej szczegółów na temat kliknij, aby imię psa


W tym przykładzie w komórce tabeli umieszczamy link do strony ze szczegółowymi opisami. Link jest określony w atrybucie href tagu . Ponieważ do strony przekazywane są dwa parametry, których wartości pobierane są z pliku XML, atrybut ten jest generowany dynamicznie. Należy również zauważyć, że znak & (ampersand) oddzielający przekazane parametry jest zapisany w pliku XSL jako & . W drugim atrybucie potrzebujemy podpowiedzi (atrybutu tytułu), który pojawia się po najechaniu myszą na link. Tekst tej podpowiedzi również zmienia się dynamicznie. Na koniec umieściliśmy statyczny atrybut target bezpośrednio w tagu .

I wreszcie zapoznaliśmy się z komentarzami w plikach XSL. To jest druga linia powyższego fragmentu.

To kończy naszą dyskusję na temat czystych możliwości XSLT i przechodzi do ostatniego akapitu tego dokumentu, dynamicznie zmieniając zawartość strony sieci Web za pomocą funkcji JavaScript i XML/XSLT bez dodatkowych wywołań bazy danych.

Dzisiaj zaczniemy rozważać bardzo popularny i wygodny język znaczników. XML. Ponieważ ten język reprezentacji danych jest bardzo elastyczny i wszechstronny i może być używany prawie wszędzie, mam na myśli coś wstyd, więc początkujący programista prędzej czy później będzie miał do czynienia z tym językiem i nie ma znaczenia, co dokładnie robisz , niezależnie od tego, czy chodzi o programowanie stron internetowych, czy administrację bazami danych, ponieważ każdy używa XML, a Ty też wykorzystasz go przy realizacji potrzebnych Ci zadań.

Zaczniemy jak zwykle od teorii, zastanowimy się, jaki to język, dlaczego jest dobry, jak się nim posługiwać i gdzie się go używa.

Definicja języka XML

XML (Rozszerzalny język znaczników) to uniwersalny i rozszerzalny język znaczników danych, który jest niezależny od systemu operacyjnego i środowiska przetwarzania. Xml służy do reprezentowania niektórych danych w postaci struktury i możesz tę strukturę samodzielnie opracować lub dostosować do konkretnego programu lub jakiejś usługi, dlatego ten język nazywa się rozszerzalny i to jest jego główna zaleta, za którą jest tak ceniony.

Jak wiecie, jest wystarczająco dużo języków znaczników, na przykład język HTML, ale wszystkie z nich, w taki czy inny sposób, zależą od procesora, na przykład ten sam html, którego kod jest analizowany przez przeglądarkę, jest zestandaryzowane i nierozszerzalne, są czytelne tagi, których składnia nie może być naruszona, a w xml można tworzyć własne tagi, czyli np. Twój znacznik. Główna różnica między HTML i XML polega na tym, że html opisuje tylko znaczniki do wyświetlania danych, a xml to abstrakcyjna struktura danych, którą można przetwarzać i wyświetlać w dowolny sposób i w dowolnym miejscu, w związku z czym nie ma potrzeby porównywania tych języków, mają zupełnie inny cel.

Jak wspomniano powyżej, xml jest bardzo powszechnym i uniwersalnym językiem, za pomocą którego prawie wszystkie aplikacje, czy to webowe, czy tylko komputerowe, wykorzystują go jako wymianę informacji, ponieważ za jego pomocą można bardzo łatwo wymieniać dane między aplikacjami lub usługami które są nawet napisane w różnych językach. W związku z tym każdy początkujący programista, który zajmuje się absolutnie dowolnym programowaniem, powinien mieć pojęcie o XML, na przykład jeśli chcesz zostać webmasterem, to po prostu musisz znać XML, ale jak zostać WEB Masterem i co i muszę wiedzieć o tym już rozważone.

Na przykład kiedyś miałem za zadanie napisać usługę, która na żądanie powinna zwracać dane w postaci xml, czyli trochę rozbudować aplikację po stronie serwerowej, a nawet nie miałem pojęcia, na czym jest napisany klient, który będzie przetwarzał te dane, a to, napisałem usługę, która zwracała dane w postaci xml i cała aplikacja działała bez zarzutu . A to tylko przykład, z którym miałem do czynienia, a teraz wyobraź sobie, ile różnych organizacji współpracuje i rozwija oprogramowanie i udostępnia dane, i nie zdziwiłbym się, że te dane będą w postaci xml.

Kiedyś musiałem też przechowywać dane xml w bazie danych MSSQL 2008, aby lepiej reprezentować te dane i wymieniać je między serwerem a klientem części aplikacji, omówiliśmy to w artykule - Transact-sql - praca z xml .

Sam język XML jest bardzo prosty i po prostu nie można się w nim zgubić, cała złożoność pojawia się właśnie w przetwarzaniu i interakcji xml z innymi aplikacjami, technologiami, tj. wszystko, co otacza xml, co jest dokładnie tym, z czym łatwo się pomylić.

Dziś mówimy tylko o podstawach XML i nie będziemy skupiać się na technologiach przetwarzania i interakcji z tym językiem, ponieważ jest to naprawdę bardzo obszerny materiał, ale myślę, że w przyszłości będziemy nadal się poznawać z powiązanymi technologiami.

Przejdźmy do praktyki. A wszystkie przykłady, które rozważymy, napiszę w Notepad ++ tylko dlatego, że jest to bardzo wygodne, ale teraz nie będziemy o tym mówić, ponieważ rozważaliśmy już to w artykule - Dlaczego Notepad ++ jest dobry dla początkujący programista.

Tagi XML

Język XML wykorzystuje znaczniki do znaczników (w znacznikach jest rozróżniana wielkość liter), ale nie te same znaczniki, co w html, ale te, które sam wymyślasz, ale dokument xml również ma przejrzystą strukturę, tj. jest tag otwierający i tag zamykający, są tagi zagnieżdżone i oczywiście są wartości, które znajdują się w tych tagach, innymi słowy, wszystko, co jest potrzebne do początkowej znajomości xml, to po prostu ich przestrzegać zasady. Wspólnie otwierający, zamykający tag i wartość są nazywane elementem, a cały dokument xml składa się z elementów, które razem tworzą strukturę danych. Dokument XML może mieć tylko jeden element główny, pamiętaj o tym, bo jeśli napiszesz dwa elementy główne, będzie to błąd.

Czas podać przykład znaczników xml, a pierwszy przykład na razie dotyczy składni:

<Начало элемента> <Начало вложенного элемента>Zagnieżdżona wartość elementu

Jak widać, wszystko jest dość proste, a takich zagnieżdżonych elementów może być bardzo dużo.

Podajmy teraz przykład prawdziwego dokumentu XML:

Jak widać, podałem tutaj tylko przykład swego rodzaju katalogu książkowego, ale nie zadeklarowałem tego dokumentu, tj. nie napisał deklaracji XML, która mówi aplikacji, która będzie przetwarzać te dane, że dane xml się tutaj znajdują i w jakim kodowaniu są prezentowane. Możesz także pisać komentarze i atrybuty, więc podajmy przykład takiego dokumentu:


Książka 1 Iwan Po prostu zarezerwuj 1 Książka 2 Siergiej Po prostu zarezerwuj 2 Książka 3 Powieść Po prostu zarezerwuj 3

Gdzie pierwszy wiersz to deklaracja deklaracji, że jest to dokument XML i musi być odczytywany w kodowaniu UTF-8.

Dane te bez przetwarzania będą wyglądały np. w przeglądarce (Mozilla Firefox) w następujący sposób:


Mam nadzieję, że rozumiesz, że tutaj katalog jest elementem głównym, który składa się z elementów książki, która z kolei składa się z elementów nazwiska, autora i komentarza, również na przykład ustawiłem kilka atrybutów na elemencie katalogu i na elemencie książki.

Jeśli chodzi o podstawy, myślę, że to wystarczy, ponieważ jeśli zagłębimy się coraz głębiej w XML i wszystkie technologie związane z tym językiem, ten artykuł nigdy się nie skończy. To wszystko na dzisiaj.