Кіріспе
XML құжаттарын түрлендіру тілі XSLT (Extensible Stylesheet Language Transformations) – бастапқыда XML құжаттарын басқа XML құжаттарына немесе веб-беттер үшін HTML, қарапайым мәтін немесе XSL пішімдеу объектілері сияқты басқа форматтарға түрлендіру үшін жасалған тіл. Бұл форматтар кейіннен PDF, PostScript және PNG сияқты форматтарға түрлендірілуі мүмкін. XSLT 1.0 спецификациясына кейінгі жаңартуларда JSON және қарапайым мәтін түрлендірулерін қолдау қосылды. 2022 жылдың тамызынан бастап тілдің ең соңғы тұрақты нұсқасы XSLT 3.0 болып табылады, ол 2017 жылдың маусым айында ұсыныс мәртебесіне ие болды. XSLT 3.0 іске асырулары Java, .NET, C/C++, Python, PHP және NodeJS қолдайды. XSLT 3.0 Javascript кітапханасын веб-браузерде де орнатуға болады. Көптеген қазіргі заманғы веб-браузерлер XSLT 1.0-ды да қолдайды. XSLT құжатын түрлендіру кезінде бастапқы құжат өзгертілмейді, керісінше, қолданыстағы құжаттың мазмұнына негізделген жаңа құжат жасалады. Әдетте, кіріс құжаттары XML файлдары болып табылады, бірақ процессор XQuery және XPath деректер моделін құра алатын кез келген дерек көзін пайдалануға болады, мысалы, реляциялық деректер базасының кестелері немесе географиялық ақпараттық жүйелер.
XSLT (Extensible Stylesheet Language Transformations) is a language originally designed for transforming XML documents into other XML documents, or other formats such as HTML for web pages, plain text or XSL Formatting Objects, which may subsequently be converted to other formats, such as PDF, PostScript and PNG. Support for JSON and plain text transformation was added in later updates to the XSLT 1.0 specification. as of August 2022, the most recent stable version of the language is XSLT 3.0, which achieved Recommendation status in June 2017. XSLT 3.0 implementations support Java, NET, C/C++, Python, PHP and NodeJS. An XSLT 3.0 Javascript library can also be hosted within the Web Browser. Modern web browsers also include native support for XSLT 1.0. For an XSLT document transformation, the original document is not changed; rather, a new document is created based on the content of an existing one. Typically, input documents are XML files, but anything from which the processor can build an XQuery and XPath Data Model can be used, such as relational database tables or geographical information systems.
Жобалау және өңдеу моделі
XSLT процессоры бір немесе бірнеше XML бастапқы құжаттарын, сондай-ақ бір немесе бірнеше XSLT стильдік парақтарды қабылдайды және оларды өңдеу арқылы бір немесе бірнеше шығыс құжатын жасайды. C сияқты кеңінен қолданылатын императивті бағдарламалау тілдерінен өзгеше, XSLT декларативті болып табылады. Негізгі өңдеу үлгісі – үлгілерді сәйкестендіру. Шаблон ережелері, күйлі ортада атқарылатын әрекеттердің міндетті тізбегін тізімдеудің орнына, процессор кездескен жағдайда, белгілі бір XPath сияқты үлгіге сәйкес келетін түйінді қалай өңдеуді анықтайды, ал шаблондардың мазмұны олардың есептелген түрін тікелей көрсететін функционалдық өрнектерден тұрады: нәтижелер ағашы, ол процессордың шығысының негізі болып табылады. Типтік процессор былай жұмыс істейді. Егер стильдік парақ оқылып, дайындалған болса, процессор кіріс XML құжатынан бастапқы ағашты құрайды. Содан кейін бастапқы ағаштың тамыр түйінін өңдейді, стильдік парақта сол түйінге ең жақсы сәйкес келетін шаблонды табады және шаблонның мазмұнын есептейді. Әрбір шаблонның нұсқаулары процессорды әдетте нәтижелер ағашында түйіндер құруға немесе тамыр түйін сияқты бастапқы ағаштағы басқа түйіндерді өңдеуге бағыттайды. Ақырында нәтижелер ағашы XML немесе HTML мәтіні түрінде серияланады.
XPath
XSLT бастапқы құжат ағашының ішінен бөліктерді анықтау және есептеулер жасау үшін XPath-ты пайдаланады. XPath әртүрлі функциялар жиынтығын ұсынады, оларды XSLT одан әрі кеңейтеді. XSLT 1.0 XPath 1.0-ды қолданады, ал XSLT 2.0 XPath 2.0-ды қолданады. XSLT 3.0 XPath 3.0 немесе 3.1 нұсқаларымен жұмыс істей алады. 1.0 және 2.0 нұсқаларында XSLT және XPath сипаттамалары бір күні жарияланған. Бірақ 3.0 нұсқасымен олар енді синхронды болмады: XPath 3.0 2014 жылдың сәуірінде ұсыныс ретінде қабылданды, одан кейін 2017 жылдың ақпанында XPath 3.1, ал 2017 жылдың маусымында XSLT 3.0 жарияланды.
Медиа түрлері
<output> элементі міндетті түрде медиа түрін қабылдай алады, бұл нәтижелі шығыс үшін медиа түрін (немесе MIME түрін) орнатуға мүмкіндік береді, мысалы: <xsl:output output="xml" media type="application/xml"/>. XSLT 1.0 ұсынымында text/xml және application/xml сияқты жалпырақ атрибут түрлері ұсынылады, себебі ұзақ уақыт бойы XSLT үшін тіркелген медиа түрі болған жоқ. Осы кезеңде text/xsl де-факто стандартына айналды. XSLT 1.0 нұсқасында медиа түрінің мәндерін қалай қолдану керектігі нақты көрсетілмеген. XSLT 2.0 нұсқасымен бірге W3C 2007 жылы application/xslt+xml MIME медиа түрін тіркеуді ұсынды, және ол кейіннен Интернетке тағайындалған нөмірлер органында тіркелді. XSLT 1.0-дың даму кезеңіндегі жобалары кіріктіру мысалдарында text/xsl түрін қолданды, және бұл түрді Microsoft 2012 жылға дейін Internet Explorer және MSXML-де іске асырып, қолдауын жалғастырды. Ол басқа браузерлердегі xml стильдік кестелерді өңдеу нұсқауларында да кеңінен танылды. Демек, тәжірибеде осы өңдеу нұсқаулығын пайдаланып браузерде түрлендіруді басқаруды көздейтін пайдаланушылар осы тіркелмеген медиа түрін қолдануға мәжбүр болды.
Өнер көрсету
XSLT процессорларының көпшілігі бастапқыда интерпретаторлар болған. Бірақ соңғы кезде кодты генерациялау көбірек таралды, мұнда мақсат ретінде портативті аралық тілдер (мысалы, Java байткоды немесе .NET Common Intermediate Language) қолданылады. Дегенмен, тіпті интерпретациялық өнімдер де әдетте жеке талдау және орындалу кезеңдерін ұсынады, бұл жадыда оңтайландырылған өрнек ағашын құруға және оны бірнеше түрлендірулерді орындау үшін қайта пайдалануға мүмкіндік береді. Бұл онлайн-жариялану қолданбаларында маңызды өнімділік артықшылықтарын береді, онда бір түрлендіру секундына көп рет әртүрлі бастапқы құжаттарға қолданылады. Бұл бөліну XSLT өңдеу API-лерінің (мысалы, JAXP) дизайнында көрінеді. Алғашқы XSLT процессорларында өте аз оңтайландырулар болған. Стиль кестесі құжаттары Document Object Model-ге оқылған, ал процессор оларға тікелей әрекет еткен. XPath қозғалтқыштары да оңтайландырылмаған. Алайда, қазіргі XSLT процессорлары функционалдық бағдарламалау тілдері мен деректер базасын сұрау тілдерінде кездесетін оңтайландыру техникаларын қолданады, мысалы, өрнек ағашын статикалық түрде қайта жазу (мысалы, есептеулерді циклдардан шығару) және аралық нәтижелердің жадты пайдалануын азайту үшін жалқау конвейерлік есептеу (және процессор келесі бауырлас::*[1] сияқты өрнекті толық бағалаусыз, барлық қосалқы өрнектерді бағалау қажет болмайынша, есептей алатын болғанда "ерте шығуға" рұқсат беру). Көптеген процессорлар жалпы мақсаттағы DOM іске асыруларына қарағанда кеңістік және уақыт жағынан айтарлықтай тиімді ағаш өрнектерін де қолданады. 2014 жылдың маусым айында Дебби Локетт және Майкл Кей XSLT процессорлары үшін XT Speedo деп аталатын ашық бастапқы кодты бенчмаркинг құралын ұсынды.