Aktualizacja XSLT 1.0 do XSLT 2.0

Na czym polega aktualizacja z XSLT 1.0 do 2.0?
1 - Jakie są możliwe powody aktualizacji?
2 - Jakie są możliwe przyczyny braku aktualizacji?
3-i wreszcie, jakie są kroki do aktualizacji?

Liczę na streszczenie -- skróconą wersję:)

Author: Witman, 2012-02-22

2 answers

Na czym polega aktualizacja z XSLT 1.0 do 2.0?

1-Jakie są możliwe powody modernizacji?

Jeśli jesteś programistą XSLT, skorzystasz w dużej mierze z wygodniejszego i bardziej wyrazistego języka XSLT 2.0 + XPath 2.0 oraz nowego modelu danych XDM (XPath Data Model).

Możesz obejrzeć ten kurs XSLT 2.0 Pluralsight, aby uzyskać mocne i systematyczne zrozumienie mocy XSLT 2.0.

Ty mieć:

  • Mocne pisanie i dostępne wszystkie typy XSD.

  • Możliwość definiowania własnych typów (schematów).

  • Typ sekwencji XPath 2.0, który nie ma żadnego odpowiednika (po prostu brakuje) w XPath 1.0.

  • Możliwość definiowania i zapisu funkcji {[71] } w czystej instrukcji XSLT -- xsl:function.

  • Zmienne zakresowe w wyrażeniach XPath(klauzula for).

  • Much lepsze i wydajniejsze przetwarzanie łańcuchów -- XPath 2.0 obsługuje wyrażenia regularne w swojej tokenize(), matches() i replace() funkcje.

  • Znacznie lepsze i wydajniejsze przetwarzanie łańcuchów -- obsługa XSLT 2.0 Dla wyrażeń regularnych -- the xsl:analyze-string, xsl:matching-substring i xsl:non-matching-substring nowe instrukcje XSLT.

  • Wygodniejsze, potężniejsze i bardziej wyraziste grupowanie: Instrukcja xsl:for-each-group.

  • Wiele nowych, bardzo potężnych funkcji XPath 2.0 - takich jak funkcje na date, czas i czas trwania, żeby wymienić tylko kilka.

  • Nowe operatory XPathintersect, except, is, >>, <<, some, every, instance of, castable as, ..., itd.

  • Ogólne operatory XPath>, <, itd. teraz działa na dowolnym uporządkowanym typie wartości (nie tylko na liczbach jak w XPath 1.0).

  • Nowe, bezpieczniejsze operatory porównywania wartości: lt, le, eq, gt, ge, ne.

  • Operator XPath 2.0 to, pozwalający na xsl:for-each select="1 to $N"

Te i wiele innych ulepszeń / nowych funkcji znacznie zwiększają produktywność każdego programisty XSLT, co pozwala na ukończenie rozwoju XSLT 2.0 w niewielkim ułamku czasu potrzebnego do opracowania tych samych modułów z XSLT 1.0.

Silne typowanie pozwala wychwycić wiele błędów podczas kompilacji i natychmiast je poprawić. Dla mnie ten silny Typ-bezpieczeństwo jest największą zaletą korzystania z XSLT 2.0.

2 - Co czy możliwe są przyczyny braku aktualizacji?

  • Często możliwe jest, rozsądne i opłacalne pozostawienie istniejących, starszych aplikacji XSLT 1.0 nietkniętych i kontynuowanie ich używania z XSLT 1.0, przy jednoczesnym rozwijaniu tylko nowych aplikacji przy użyciu XSLT 2.0.

  • Twoje kierownictwo + wszelkie inne nietechniczne powody.

  • Mając wiele starszych aplikacji XSLT 1.0 napisanych w złym stylu (np. używając DOE lub funkcje rozszerzeń, które teraz muszą być ponownie napisane i Kod refakturowany).

  • Brak dostępnego procesora XSLT 2.0.

3 - i wreszcie, jakie są kroki do aktualizacji?

  • Zmień atrybut version elementu xsl:stylesheet lub xsl:transform z "1.0" na "2.0".

  • Usuń wszystkie xxx:node-set() funkcje.

  • Usunąć wszelkie DOE.

  • Bądź gotowy na niespodziankę, która xsl:value-of teraz wyświetla nie tylko pierwszy, ale wszystkie elementy sekwencji.

  • Staraj się używać nowej instrukcji xsl:sequence w jak największym stopniu -- użyj jej do zastąpienia dowolnej instrukcji xsl:copy-of; użyj jej zamiast xsl:value-of w dowolnym momencie, gdy typem wyjścia nie jest węzeł Łańcuchowy lub tekstowy.

  • Przetestuj dokładnie.

  • Po sprawdzeniu, czy kod działa zgodnie z oczekiwaniami, rozpocznij refaktoryzację (jeśli uznasz to za konieczne). Dobrym pomysłem jest zadeklarowanie typy dla dowolnych zmiennych, parametrów, szablonów i funkcji. Może to ujawnić nowe, ukryte błędy i poprawić jakość kodu.

  • Opcjonalnie zdecyduj, które szablony nazwane mają zostać przepisane jako xsl:function.

  • Zdecyduj, czy nadal potrzebujesz funkcji rozszerzeń, które są używane w starej wersji, czy możesz je łatwo przepisać, korzystając z nowych, potężnych możliwości XSLT.

Uwagi końcowe : nie wszystkie z powyższych konieczne są kroki, które można zatrzymać i zadeklarować udaną migrację na podstawie zerowych wyników testów błędów. O wiele czystsze jest używanie wszystkich funkcji XSLT 2.0/XPath 2.0 w nowych projektach.

 101
Author: Dimitre Novatchev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-01-18 18:09:00

Odpowiedź Dimitra jest bardzo wyczerpująca i w 100% dokładna (jak zawsze), ale jest jedna kwestia, którą chciałbym dodać. Podczas aktualizacji do procesora 2.0 masz do wyboru pozostawienie atrybutu version ustawionego na "1.0" i uruchomienie w "trybie zgodności wstecznej" lub zmianę atrybutu version NA "2.0". Ludzie często pytają, które podejście jest zalecane.

Moja rada jest taka, że jeśli masz dobry zestaw testów dla arkuszy stylów, weź pod uwagę: set version= "2.0", uruchom testy, a jeśli są wszelkie problemy, napraw je. Zazwyczaj problemem będzie kod, który nigdy nie był do końca poprawny i działał tylko przez przypadek. Ale jeśli nie masz dobrego zestawu testów i martwisz się o niezawodność swojego obciążenia, opuszczenie version="1.0" jest podejściem o niższym ryzyku: procesor będzie emulował wszystkie dziwactwa XSLT 1.0, takie jak xsl:value-ignorowania wszystkich poza pierwszą pozycją i dziwnych reguł porównywania liczb z łańcuchami znaków.

 27
Author: Michael Kay,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-22 09:45:23