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ę:)
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()
ireplace()
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
ixsl: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 XPath
intersect
,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 naxsl: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
elementuxsl:stylesheet
lubxsl: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 instrukcjixsl:copy-of
; użyj jej zamiastxsl: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.
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.
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