Кіріспе

Saxon — Майкл Кей жасаған XSLT және XQuery процессоры, қазір оны Saxonica компаниясы дамытып, қолдауды жүзеге асырады. Ашық және жабық кодты коммерциялық нұсқалары бар. Java, JavaScript және .NET платформалары үшін нұсқалары қолжетімді. 2023 жылғы қаңтар айының мәліметі бойынша, ағымдағы нұсқасы — 12.0.

Нұсқалар

Сакстардың бастапқы даму желісі 6-шы нұсқалар сериясымен аяқталды. Бұл XSLT 1.0 процессорларының сериясы. Қазіргі 6.5.5 нұсқасы техникалық қызмет көрсетуден басқа әрі қарышта дамытылмайды. 6 сериясы тек Java бағдарламалау тілі үшін қолжетімді. Қазіргі Saxon 12 даму желісі XSLT 3.0 және XQuery 3.1 талаптарын іске асырады. Saxon 12 XSLT 1.0 және XSLT 2.0 стильдік парақтарын өңдей алады. (XSLT 2.0 және 3.0 XSLT 1.0-мен толық үйлесімді.) Сондай-ақ, ұсынылып отырған XSLT 4.0 талаптарына қатысты таңдаулы қолдауды қамтиды. Екі бөлек бастапқы код базасы бар: Java бастапқы коды және JavaScript бастапқы коды. Java коды үш платформаға арналған өнімдерді жасау үшін қолданылады: SaxonJ (Java және басқа JVM тілдері, мысалы Scala), SaxonCS (C# және басқа NET тілдері, мысалы VB.NET) және SaxonC (C, C++, Python және PHP үшін API-мен). JavaScript код базасы SaxonJS-ті жасау үшін қолданылады, ол веб-браузерлерде және Node.js ортасында жұмыс істейді. Java-да құрастырылған нұсқалар үш деңгейде болады: Home Edition – бұл ашық бастапқы кодты өнім, ол талаптарда анықталған стандарттарға сәйкестіктің ең төменгі деңгейін ұсынады. Professional Edition – стандарттарда талап етілмейтін, мысалы, кеңейтілген функциялар мен сериялау опциялары сияқты өндірушіге тән функционалдықтарды қосады. Enterprise Edition – W3C стандарттарында қосымша мүмкіндік ретінде анықталған, схемалық тану және ағындылық сияқты кеңейтілген мүмкіндіктерді, сондай-ақ көп жіпті орындау және байт-кодты жасау сияқты өнімділікке қатысты мүмкіндіктерді қосады. SaxonCS өнімі XSLT-те жазылған Java-дан C# транспиляторы арқылы Java бастапқы код базасынан құрастырылған (https://markupuk.org/webhelp/index.html#ar04.html). 2022 жылғы сәуір айының мәліметі бойынша, осы платформада тек Enterprise Edition ұсынылады. 2004 жылдан 2009 жылға дейін Saxon екі бөлек нысанда қолжетімді болды: Saxon B және Saxon SA. Екеуі де ұқсас код базасына негізделген. Saxon B – Mozilla Public License лицензиясы бойынша шығарылған ашық бастапқы кодты бағдарламалық жасақтама, ал Saxon SA – жабық бастапқы кодты коммерциялық өнім болды. Saxon B мен Saxon SA арасындағы айырмашылық – B «негізгі», ал SA «схемалық» болды. Бұл терминдер XSLT 2.0 және XQuery 1.0 талаптарындағы терминдерге сілтеме жасайды. «Схемалық» процессор бастапқы XML құжатындағы әртүрлі элементтердің дерек түрлерін анықтау үшін W3C XML схемасын пайдалана алады. Бұл дерек түрлерін XPath 2.0 және XSLT 2.0 командаларында қолдануға болады. «Негізгі» XSLT 2.0 процессоры дерек түрлері туралы ақпаратты пайдалана алмайды. Saxon XSLT 2.0, XPath 2.0 және 3.0, XQuery 1.0 және 3.0 W3C ұсынымдарына қатаң сәйкес келеді, сондай-ақ XML Schema 1.0 және 1.1 талаптарын іске асырады. 2021 жылғы мәлімет бойынша, қазіргі нұсқа (10.6) XSLT 3.0, XPath 3.1 және XQuery 3.1 үшін W3C ұсынымдарына сәйкес келеді. Saxon коды Java тілінде жазылған. 2005 жылы мамыр айында Дэвид Петерсон және басқалар Saxon-ды IKVM.NET кросс-компиляторын пайдаланып .NET платформасында жұмыс істеу үшін кросс-компиляциялауға болатынын көрсетті, соның нәтижесінде Saxon.NET жеке өнім ретінде пайда болды. Saxon 8.7 нұсқасымен Saxonica осы технологияны қабылдады және осы нұсқадан бастап барлық нұсқалар Java және .NET үшін бір уақытта шығарылды. .NET нұсқасы Java платформасына тән мүмкіндіктерді (мысалы, JDOM, Dom4j және XOM-мен интеграция) алып тастайды және .NET платформасының XML өңдеу мүмкіндіктерімен интеграцияны қамтамасыз ететін мүмкіндіктерді ұсынады. 2012 жылы бірнеше прототиптерден кейін Saxonica Saxon Client Edition (Saxon CE) нұсқасын шығарды, бұл өнімнің браузер ортасында жұмыс істеуге бейімделген нұсқасы. Бұл Java бастапқы кодын Google жасаған GWT кросс-компиляторы арқылы JavaScript-ке кросс-компиляциялауға мүмкіндік беру арқылы жүзеге асырылды. Saxon CE браузерде XSLT 2.0-дың алғашқы іске асырылуын қамтамасыз етеді, сонымен қатар тілді кеңейтеді, осылайша ол тек HTML-ді ғана емес, пайдаланушының өзара әрекеттесуін тікелей басқара алады. 2013 жылғы ақпан айында Saxon CE 1.1 нұсқасымен өнім ашық бастапқы кодқа айналды. 2016 жылғы ақпан айында Майкл Кей Saxonica компаниясының таза JavaScript-те жазылған Saxon CE-нің орнын алмастыру бойынша жұмыс істеп жатқанын және оған Saxon JS деп ат қойғанын хабарлады. Саксонның авторы Майкл Кей XSLT 2.0 талаптарының редакторы және XSLT 3.0 жобасының редакторы болып табылады.

Ерекшеліктері

Java, C (оның ішінде PHP және Python) және NET платформалары үшін қол жетімді Saxon нұсқалары бір код базасынан құрылған. Соңғы нұсқа транспайлер арқылы жасалады. Барлық технологиялық платформа нұсқалары бірдей мүмкіндіктерге ие және олар екі түрлі лицензиялық шарт бойынша үш түрлі мүмкіндіктер жиынтығымен қолжетімді. Осы технологиялық платформалардың әрқайсысы үшін MPL 2.0 лицензиясымен ашық бастапқы коды бар Saxon HE өнімі бар. Ол тиісті ерекшеліктерде анықталғандай, негізгі XSLT 3.0, XPath 3.1 және XQuery 3.1 функционалдығын қамтамасыз етеді. Сонымен қатар, Saxon HE XSLT 3.0 спецификациясында міндетті емес деп жарияланған және бұрын коммерциялық нұсқаларға арналған, мысалы, динамикалық XPath 3.1 бағалау және XSLT 3.0-да жоғары деңгейдегі функциялар сияқты кейбір мүмкіндіктерді іске асырады. Коммерциялық нұсқалары Saxon PE және Saxon EE деп аталады. Saxonica веб-сайтында толық және жаңартылған мүмкіндіктер матрицасын табуға болады. Төртінші технологиялық платформа – JavaScript. Бұрын ашық кодты XSLT процессоры Saxon CE, GWT-ні пайдаланып, жалпы Java көзінен кросс-компилирленген. SaxonJS – JavaScript-те жаңадан құрылған бағдарлама. XSLT көздерін Saxon EE немесе XSLT негізіндегі XSLT компиляторы арқылы құрастыруға болады, ол аз оңтайландырылған кодты жасайды. Екінші жағынан, XSLT негізіндегі XSLT компиляторы XSLT-ті динамикалық түрде компиляциялауға және орындауға мүмкіндік береді. SaxonJS, Saxon HE-де қолжетімді XSLT 3.0 және XPath 3.1 мүмкіндіктерінің көп бөлігін қолдайды, бірақ XQuery-ді қолдамайды. Saxon HE және тоқтатылған Saxon CE-ден айырмашылығы, SaxonJS ашық кодты емес, бірақ оны браузерде немесе Node.js-те тегін пайдалануға болады.