Transformacje strumieniowe dla XML
Streaming Transformations for XML ( STX ) to język transformacji XML, który ma być szybką alternatywą dla wersji 1.0 i 2.0 XSLT o niskim zużyciu pamięci . Bieżące prace nad XSLT 3.0 obejmują możliwości przesyłania strumieniowego.
Przegląd
STX to standard XML do wydajnego przetwarzania danych XML opartych na strumieniu. Podstawowy XSLT nie nadaje się dobrze do przetwarzania strumieniowego, a STX wypełnia tę niszę.
Konwencjonalne przetwarzanie XML polega na załadowaniu całego dokumentu XML do pamięci w celu użycia. W przeciwieństwie do tego SAX przesyła strumieniowo zdarzenia XML, takie jak „otwarty element”, „zamknięty element” i „węzeł tekstowy”, dzięki czemu inne oprogramowanie może natychmiast rozpocząć interpretację informacji, zanim plik zostanie osiągnięty. Niestety niektóre programy nie mogą efektywnie wykorzystywać fragmentów XML w ten sposób i muszą zbudować cały dokument, aby rozpocząć przetwarzanie. Tak jest w przypadku XSLT. XPath XSLT może wybrać dowolny węzeł w całym dokumencie, musi mieć cały dokument dostępny w pamięci.
STX zezwala tylko na zapytania bezpośrednio otaczające bieżący węzeł, dzięki czemu może szybko rozpocząć transformację i generować węzły zdarzeń SAX po ich przybyciu. Ponieważ może odrzucić węzły natychmiast po przetworzeniu, użycie pamięci jest znacznie niższe niż w przypadku XSLT. Posiadanie ograniczonego zakresu zapytań jest charakterystyczną cechą STX.
Ta architektoniczna decyzja celowo marginalizuje STX jako język niszowy. Rzeczywiście, błędem byłoby powiedzieć, że STX jest językiem transformacji ogólnego przeznaczenia; jeśli jednak Twoje potrzeby w zakresie transformacji mogą zostać zaspokojone przez STX, jest to wydajny i mądry wybór.
Specyfikacje
Język zapytań STX nazywa się STXPath i jest oparty na XPath 2.0 .
Implementacje STX są dostępne w Javie i Perlu .
Podobne projekty
W przeciwieństwie do STX, który jest zadeklarowany przy użyciu składni XML, te dwa projekty wiążą zdarzenia SAX z funkcjami wywołania zwrotnego :
- Xineo OAX
- Adapter SAX