XSLT
XSLT (Extensible Stylesheet Language Transformations) је језик за трансформисање XML докумената[1] који касније могу бити конвертовани и у остале формате као што су PDF, PostScript и PNG.[2] XSLT 1.0 је подржан у свим данашњим претраживачима.
Улазни документи су XML фајлови, али се може користити било шта од чега се може креирати XQuery и XPath модел података, као што су релационе базе података.[1]
Према XSL трансформацијама се односимо као према програмском језику, јер је систем упита који се може описати Тјуринговом машином, тј. XSLT је Туринг-потпун.[3]
Историја уреди
Функционални језици су имали огроман утицај на XSLT.[4] Највећи утицај је имао DSSSL, који је форматирао SGML као што и XSLT форматира XML.[5]
- XSLT 1.0: XSLT је био део World Wide Web Consortiumовог (W3C) Extensible Stylesheet Language (XSL) 1998–1999 пројекта у коме су такође настали XSL-FO и XPath. Неки чланови који су креирали XSLT, укључујући James Clark-a, уредника, претходно су радили на креирању DSSSL. XSLT 1.0 објављен у новембру 1999.[6]
- XSLT 2.0: након неуспешног покушаја да се направи варзија 1.1 2001. године,[7] радна група XSL је удружила снаге са XQueryјевом радном групом и направили су XPath 2.0,[8] са богатијим моделом података и системом заснованим на XML Schema. Најновија верзија је XSLT 2.0,[9] развијена је од стране Michael Kaya. Од 2010, XSLT 1.0[10] се и даље широко употребљава, али 2.0 верзије није подржан од стране веб прегледача или у окружењима попут LAMPа.
- Од октобра 2014. године карактерсистике XSLT 3.0 обухватају:[11]
- Streaming трансформација: у претходним верзијама потпуни унос докумената је морао бити учитан у меморију пре обраде,[12] а испис није могао бити приказан док процесуирање није било завршено. Радна верзија XML streaminga ће бити коришћена за процесирање докумената који су исувише велики да стану у меморију, или када су трансформације писане у XML Pipelines.
- Побољшања у модуларност великих stylesheet-ова.
- Побољшано управљање динамичким грешакама, на пример xsl:try инструкција.
- Функције сада могу бити аргументи другим функцијама.
Дизајн и моделирање процеса уреди
XSLT користи један или више XML изворних докумената и један или више XSLT stylesheetова и процесуира их да би направио излазни документ. У поређењу са широко употребљаваним императивним програмирањем, коме, на пример, припада и језик C, XSLT је декларативни језик.[13] Основа процесне парадигме је повезивање образаца.[14] Уместо набрајања императивног низа наредби које се изводуле у окружењу, треба дефинисати само како руковати са повезивањем чворова одређеног XPath образца, а ако се деси да процесор наиђе на неки, садржај образаца ефикасно обрађује функционалне изразе који директно представљају свој добијени формулар - резултујуће дрво, које је основа за процесорев излаз.
Процесор прати фиксиран алгоритам.[15] На почетку, уз претпоставку да је stylesheet учитан и припремљен, процесор гради изворно дрво од улазног XML документа. Затим се обрађује коријенски чвор изворног дрвета, налази се одговарајући шаблон за тај чвор у stylesheet-у, и проверава се садржај шаблона. Инструкције у сваком шаблону углавном усмеравају процесор или да ствара чворове у резултујућем дрвету, или да обради више чворова у изворном дрвета на исти начин као и коренски чвор. Излаз представља резултатирајуће дрво.
Имплементација порцесора уреди
- -Алтова RaptorXML Сервер: cross-платформа која подржава XSLT 1.0 и 2.0, већину XPath 3.0, и неке делове из XSLT 3.0 радног нацрта; такође и XQuery. Дозвољава операције командне линије и интерфејса COM, Java и .NET[16] и такође укључује уграђен HTTP сервер.
- Exselt:[17] XSLT 3.0 процесор који ради на .NET frameworku написаном у F#. Потпуно подржава XSLT 3.0 нацрт, XPath 3.0 препоруку и XDM 3.0 препоручене стандарде.
- libxslt је бесплатна библиотека реализована под МИТ лиценцом која се може поново користити у комерцијалним апликацијама. Базирана је на libxml и имплементирана на C- у због брзине и портабилности. Подржава XSLT 1.0 и EXSLT екстензије.[18]
- Може бити кориштена у командној линији преко xsltproc[19] који је укључен у OS X[20] и многим Linux дистрибуцијама и може бити коришћена на Windowsu преко Cygwinа.[21]
- WebKit и Blink, коришћени у Safari и Chrome веб прегледачима респективно, користе libxslt библиотеку за обављање XSL трансформација.[22]
- Bindings постоји за Python,[23] Perl,[24] Ruby,[25] PHP,[26] Common Lisp,[27] Tcl,[28] и C++.[29]
- MSXML и .NET. MSXML укључују XSLT 1.0 процесор. Од MSXML 4.0 укључена је алатка командне линије
msxsl.exe
.[30] - Saxon: XSLT (2.0 и делом 3.0) и XQuery 3.0 процесор са отвореним кодом и власничким софтвером за самосталне операције и за Java, JavaScript[31] и .NET.
- QuiXSLT: XSLT 3.0 процесор који ради стреаминг имплементиран у Javi од стране Innovimaxa и INRIA.[32]
- Xalan: XSLT 1.0 процесор отвореног кода од Apache Software Foundation доступан самостално али и за Javu и C++.
- Веб прегледачи: Safari, Chrome, Firefox, Opera и Internet Explorer подржавају XSLT 1.0. Ни један изворно не подржава XSLT 2.0, иако производи треће стране као што су Saxon-CE[33] и Frameless[34] могу обезбедити ову функционалност.[35][36] Веб прегледачи могу обављати трансформације над XML датотекама у ходу и приказати резултат обраде у прозору прегледача. Ово се обавља уграђивањем XSL у XML документ или се упућује на фајл који садржи XSL инструкције из XML документа. Овај други метод не може да ради са Chromом због безбедносног модела.[37]
- XMLStarlet је "листа алатки командне линије које могу бити кориштене да трансформишу, изаберу, тестирају и уреде XML документа". Може "применити XSLT stylesheet-ове на XML документа" и не захтева Javu. Користи libxslt и подржава XSLT 1.0.
- Xuriella[38] i Plexippus-xpath[39] су XSLT 1.0 процесори писани у Common Lispu.
Перформансе уреди
Већина ранијих XSLT процесора су преводиоци. У скорије време, код све учесталије користи преносиве средње језике (као што су Java bytecode или .NET Common Intermediate Language) као циљ. Међутим, чак и интерпретативни производи углавном нуде засебне анализе и фазе извршавања, омогућавајући да се оптимално изразно дрво креира у меморији и поново користити за обављање разних трансформација.
Ово омогућава значајне предности перформанси у онлајн издавачким програмима, где је иста трансформација примењена много пута у секунди над различитим изворним документима.[40] Ово раздвајање се огледа у дизајну XSLT-а који процесуира API-је (као што је Java API за XML процесирање JAXPа).
Ранији XSLT процесорс имали су врло мало оптимизације. Stylesheet документа су учитавана у Document Object Modelе а процесор делује на њих директно. XPath алати такође нису били оптимизовани. Међутим, све већем упоребом, XSLT процесори почињу користити оптимизационе технике функционалних језика и релационих упитних језика, као што су статичка преписивања дрвећа (нпр. изместити рачунанања изван петљи) и лење проточне процене да би се смањио меморијски отисак произведен међурезултатима (и дозволио "рани излазак" када процесор може оценити израз као што је following-sibling::*[1]
без потпуног рачунања подизраза). Многи процесори користе репрезентацију дрвета која је значајно ефикаснија (и у времену и у порстору)[41] него имплементација опште намене.
У јуну 2014, Debbie Lockett и Michael Kay представили су бенцхмаркинг оквир отвореног кода за XSLT процесоре назван XT-Speedo.[42]
XSLT типови медиа уреди
<output>
елемент може прихватити тип media-type
, који допушта да се постави тип медиа (или MIME type) за резултирајући излаз. На пример: <xsl:output output="xml" media-type="application/xml"/>
. XSLT 1.0 препоручује општије типове атрибута text/xml
и application/xml
јер дуго времена није било регистрованог типа медија за XSLT. Тада је text/xsl
постао de facto стандард. У XSLT 1.0 није било прецизирано како media-type
вредности треба користити.
Објављивањем XSLT 2.0, W3C препоручује регистрацију MIME типа медија application/xslt+xml
[43] који је касније био регистрован на Internet Assigned Numbers Authority (IANA).[44]
Радни нацрт XSLT је користио text/xsl
у својим примерима и овај тип је имплементирао и настављао да промовише Microsoft у Internet Explorer-у[45] и MSXML. Широко је употребљивана и xml-stylesheet
процесна инструкција. Зато, у пракси, корисници који желе да контролишу трансформацију у прегледачу кориштењем процесних инструкција морају користити нерегистрован медиа тип.[46]
XSLT примери уреди
Испод је пример долазног XML документа.
<?xml version="1.0" ?>
<osobe>
<osoba username="PP1">
<ime>Petar</ime>
<prezime>Petrović</prezime>
</osoba>
<osoba username="MM1">
<ime>Marko</ime>
<prezime>Marković</prezime>
</osoba>
</osobe>
Пример 1 (трансформисање из XSLT у XML) уреди
Овај XSLT stylesheet обезбјеђује шаблон за превођење XML документа.
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/osobe">
<root>
<xsl:apply-templates select="osoba"/>
</root>
</xsl:template>
<xsl:template match="osoba">
<ime username="{@username}">
<xsl:value-of select="ime" />
</ime>
</xsl:template>
</xsl:stylesheet>
Ово доводи до новог XML документа, који има другачију структуру:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<ime username="PP1">Petar</ime>
<ime username="MM1">Marko</ime>
</root>
Пример 2 (превођење из XML у XHTML) уреди
Процесовање XSLT фајла
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://www.w3.org/1999/xhtml">
<xsl:output method="xml" indent="yes" encoding="UTF-8"/>
<xsl:template match="/osobe">
<html>
<head> <title>Testiranje XML primera</title> </head>
<body>
<h1>Osobe</h1>
<ul>
<xsl:apply-templates select="osoba">
<xsl:sort select="prezime" />
</xsl:apply-templates>
</ul>
</body>
</html>
</xsl:template>
<xsl:template match="osoba">
<li>
<xsl:value-of select="prezime"/><xsl:text>, </xsl:text><xsl:value-of select="ime"/>
</li>
</xsl:template>
</xsl:stylesheet>
са XML улазном датотеком приказаном горе резултира у наредном XHTML (размак је прилагођен због читљивости):
<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head> <title>Testiranje XML primera</title> </head>
<body>
<h1>Osobe</h1>
<ul>
<li>Markovic, Marko</li>
<li>Petrovic, Petar</li>
</ul>
</body>
</html>
Овај XHTML генерише приказани излаз када је покренут у веб прегледачу.
Да би веб прегледач могао аутоматски да примењују XSL трансформацију у XML документ на екрану, XML stylesheet са инструкцијама за процесирање може да се убаци у XML. Тако, на пример, ако је stylesheet у Примеру 2 изнад био доступни као "primer2.xsl", следећа упутства се могу додати на оригинални долазни XML:[47]
<?xml-stylesheet href="primer2.xsl" type="text/xsl" ?>
У овом примеру, text/xsl
је технички нетачно, судећи по W3C спецификацијама[47] (по којима је то требало да буде text/xml
), али то је једина врста медија који је широко подржан од стране браузера од 2009.
Референце уреди
- ^ а б „Трансформатион”. 19. 9. 2012.
- ^ „XМЛ Оутпут Метход”. 19. 9. 2012.
- ^ Кепсер, Степхан. „А Симпле Прооф фор тхе Туринг-Цомплетенесс оф XСЛТ анд XQуерy”. Процеедингс оф Еxтреме Маркуп Лангуагес. Архивирано из оригинала 04. 05. 2012. г. Приступљено 30. 11. 2016.
- ^ Мицхаел Каy. „Wхат кинд оф лангуаге ис XСЛТ?”.
- ^ „А Пропосал фор XСЛ”. W3Ц.
- ^ „XМЛ анд Семантиц Wеб W3Ц Стандардс Тимелине” (ПДФ). Архивирано из оригинала (ПДФ) 24. 04. 2013. г. Приступљено 30. 11. 2016.
- ^ „XСЛ Трансформатионс (XСЛТ) Версион 1.1”. W3.орг. 24. 8. 2001. Приступљено 12. 7. 2014.
- ^ „XМЛ Патх Лангуаге (XПатх) 2.0 (Сецонд Едитион)”. W3.орг. 14. 12. 2010. Приступљено 12. 7. 2014.
- ^ „XСЛ Трансформатионс (XСЛТ) Версион 2.0”. W3.орг. 23. 1. 2007. Приступљено 12. 7. 2014.
- ^ „XСЛ Трансформатионс (XСЛТ)”. W3.орг. 16. 11. 1999. Приступљено 12. 7. 2014.
- ^ „Wхат'с Неw ин XСЛТ 3.0?”. w3. Приступљено 6. 1. 2014.
- ^ Каy, Мицхаел. „А Стреаминг XСЛТ Процессор”. Балисаге: Тхе Маркуп Цонференце 2010 Процеедингс. Приступљено 15. 2. 2012.
- ^ „Дисцовер тхе Wондерс оф XСЛТ: XСЛТ Qуиркс”. Архивирано из оригинала 09. 07. 2011. г. Приступљено 30. 11. 2016. „XСЛТ ис а верy специализед лангуаге wитх а дистинцт децларативе флавор.”
- ^ Каy, Мицхаел. „Wхат кинд оф лангуаге ис XСЛТ?”. ИБМ. Приступљено 13. 11. 2013.
- ^ „XСЛТ Дефинитионс”. „XСЛТ децларатионс дефине а сет оф рулес анд гуиделинес тхат аре апплиед дуринг процессинг аццординг то а предефинед алгоритхм.”
- ^ „РапторXМЛ”. Приступљено 21. 8. 2013.
- ^ „Еxселт XСЛТ Процессор”. Еxселт. 6. 6. 2015. Архивирано из оригинала 18. 10. 2016. г. Приступљено 30. 11. 2016.
- ^ „Тхе XСЛТ C либрарy фор ГНОМЕ: либxслт”. Приступљено 23. 11. 2012.
- ^ „Тхе XСЛТ C либрарy фор ГНОМЕ: Тхе xслтпроц тоол”. Приступљено 23. 11. 2012.
- ^ „xслтпроц ман паге”. Приступљено 23. 11. 2012.
- ^ „Неw пацкаге: либxслт”. Приступљено 23. 11. 2012.
- ^ „Тхе WебКит Опен Соурце Пројецт - XСЛТ”. Архивирано из оригинала 05. 09. 2015. г. Приступљено 25. 10. 2009.
- ^ „Тхе XМЛ C парсер анд тоолкит оф Гноме: Пyтхон анд биндингс”. Приступљено 23. 11. 2012.
- ^ „XМЛ::ЛибXСЛТ - Интерфаце то тхе ГНОМЕ либxслт либрарy”. ЦПАН. Приступљено 23. 11. 2012.
- ^ „либxслт-рубy”. Приступљено 23. 11. 2012.
- ^ „либxмл”. Приступљено 23. 11. 2012.
- ^ „цл-либxмл2 Хигх-левел wраппер ароунд либxмл2 анд либxслт либрариес”.
- ^ „ТцлXМЛ”. Приступљено 21. 5. 2013.
- ^ „либxмл++”. соурцефорге.нет. Приступљено 23. 11. 2012.
- ^ „Цомманд Лине Трансформатион Утилитy (мсxсл.еxе)”. Мицрософт. Приступљено 22. 10. 2012.
- ^ „Саxон Цлиент Едитион 1.0”. Саxоница. Приступљено 14. 8. 2012.
- ^ „QуиXСЛТ » QуиX-Тоол Суите”. Пројецт.инриа.фр. 14. 11. 2013. Приступљено 12. 7. 2014.
- ^ Саxоница. „Абоут Саxон-ЦЕ”. Приступљено 16. 6. 2012.
- ^ Фрамелесс. „Фрамелесс XСЛТ/XПатх 2.0 процессор”. Приступљено 9. 6. 2014.[мртва веза]
- ^ Делпратт, О'Неил (2013). „XМЛ он тхе wеб: ис ит стилл релевант?”. XМЛ Лондон 2013: 35—48. ИСБН 978-0-9926471-0-0. дои:10.14337/XМЛЛондон13.Делпратт01. Архивирано из оригинала 13. 03. 2017. г. Приступљено 30. 11. 2016.
- ^ Броерсма, Робберт; Ван дер Колк, Yолијн (2014). „Фрамелесс фор XМЛ - Тхе Реацтиве Револутион”. XМЛ Лондон 2014: 128—132. ИСБН 978-0-9926471-1-7. дои:10.14337/XМЛЛондон14.Броерсма01. Архивирано из оригинала 03. 03. 2016. г. Приступљено 30. 11. 2016.
- ^ „Цан'т реад ан XМЛ анд/ор XСЛТ ин Гоогле Цхроме”. Стацк Оверфлоw. 2014. Приступљено 12. 7. 2014.
- ^ „Xуриелла XСЛТ”.
- ^ „Плеxиппус XПатх”.
- ^ Саxон: Анатомy оф ан XСЛТ процессор - Артицле десцрибинг имплементатион & оптимизатион детаилс оф а популар XСЛТ процессор.
- ^ Лумлеy, Јохн; Каy, Мицхаел (2015). „Импровинг Паттерн Матцхинг Перформанце ин XСЛТ”. XМЛ Лондон 2015: 9—25. ИСБН 978-0-9926471-2-4. дои:10.14337/XМЛЛондон15.Лумлеy01. Архивирано из оригинала 15. 04. 2016. г. Приступљено 30. 11. 2016.
- ^ Каy, Мицхаел; Лоцкетт, Деббие (2014). „Бенцхмаркинг XСЛТ Перформанце”. XМЛ Лондон 2014: 10—23. ИСБН 978-0-9926471-1-7. дои:10.14337/XМЛЛондон14.Каy01. Архивирано из оригинала 04. 03. 2016. г. Приступљено 30. 11. 2016.
- ^ „XСЛ Трансформатионс (XСЛТ) Версион 2.0”. W3Ц. Приступљено 19. 10. 2012.
- ^ „Апплицатион Медиа Тyпес”. ИАНА. Приступљено 19. 10. 2012.
- ^ „XСЛТ Реqуирементс фор Виеwинг XМЛ ин а Броwсер”. Мицрософт. Приступљено 19. 10. 2012.
- ^ Каy, Мицхаел (2008). XСЛТ 2.0 анд XПатх 2.0 Программер'с Референце. Wилеy. стр. 100. ИСБН 978-0-470-19274-0.
- ^ а б „XСЛ Трансформатионс (XСЛТ) Версион 1.0: W3Ц Рецоммендатион – Ембеддинг Стyлесхеетс”. W3Ц. 16. 11. 1999.
Додатна литература уреди
- XSLT од Doug Tidwell, објавио O’Reilly -978-0-596-00053-0-
- XSLT Cookbook од Sal Mangano, објавио O’Reilly -978-0-596-00974-8-
- XSLT 2.0 Programmer's Reference од Michael Kay ISBN 978-0-7645-6909-8
- XSLT 2.0 and XPath 2.0 Programmer's Referenca од Michael Kay ISBN 978-0-470-19274-0
- XSLT 2.0 Web Development од Dmitry Kirsanov ISBN 978-0-13-140635-3
- XSL Companion, Друга едиција од Neil Bradley, објавио Addison-Wesley ISBN 978-0-201-77083-4
- XSLT and XPath on the Edge (Unlimited Edition) од Jeni Tennison, објавио Hungry Minds Inc, U.S. ISBN 978-0-7645-4776-8
- XSLT & XPath, A Guide to XML Transformations од John Robert Gardner и Zarella Rendon, објавио Prentice-Hall ISBN 978-0-13-040446-6
- XSL-FO од Dave Pawson, објавио O'Reilly ISBN 978-0-596-00355-5
Спољашње везе уреди
- Документација
- XSLT 1.0 W3C Recommendation
- XSLT 2.0 W3C Recommendation
- XSLT 3.0 W3C Working Draft
- XSLT - MDC Docs Архивирано на сајту Wayback Machine (26. децембар 2011), Mozilla Developer Network
- XSLT Reference (MSDN)
- XSLT Elements (Saxon)
- XSLT introduction and reference
- XSLT код библиотека
- EXSLT Архивирано на сајту Wayback Machine (19. јул 2006) је широко распрострањена иницијатива заједница да обезбеде проширења XСЛТ.
- FXSL је библиотека која спроводи подршку функција вишег реда у XSLT. FXSLT је написана у самом XSLT-у.
- The XSLT Standard Library пружа XSLT дивелопер са сетом XСЛТ образаца за најчешће коришћених функција. Ово се имплементира само у XSLT, то јест не користе се никакви додаци.
- Kernow GUI за Saxon који обезбеђује „и клик интерфејс за покретање трансформација.
- xslt.js – Transform XML with XSLT Архивирано 2013-01-05 на сајту Archive.today JavaScript библиотека које трансформисе XML у XSLT u pregledaču.
Овај чланак је започет или проширен кроз пројекат семинарских радова. Потребно је проверити превод, правопис и вики-синтаксу. Када завршите са провером, допишете да након |проверено=. |