Кіріспе
OmniMark – көбінесе баспа саласында қолданылатын төртінші буын бағдарламалау тілі. Қазіргі таңда Stilo International компаниясының эксклюзивті бағдарламалық өнімі болып табылады. 2022 жылдың шілдесіне дейін OmniMark-тың соңғы нұсқасы 11.0 болды.
Қолданылуы
OmniMark деректерді өңдеуге және оларды бір форматтан екінші форматқа түрлендіруге қолданылады, ағынды архитектураны пайдалана отырып, үлкен көлемдегі мазмұнды жадыда сақталмай, тізбектей өңдеуге мүмкіндік береді. Онда XML-талдаушысы бар және Sedna түпнұсқа XML деректер базасымен интеграция арқылы XQuery қолдауы бар. Сонымен қатар, ол тұрақты өрнектерге ұқсас концепцияны іске асыратын іздеу ережелерін өңдеу мүмкіндігіне ие, бірақ үлгі өрнегінің синтаксисі Perl және Ruby бағдарламалау тілі сияқты басқа тілдерде қолданылатын тұрақты өрнек синтаксисіне қарағанда ағылшын тіліне жақын. OmniMark XSLT сияқты схема түрлендіру тапсырмалары үшін де қолданылуы мүмкін, бірақ процедуралық элементтерді қолдау үшін қосымша құрылымдарды қажет етмей, процедуралық және функционалдық код арасында ауысуды қолдайды.
Тарих
OmniMark бастапқыда 1980-ші жылдары канадалық бағдарламалық қамтамасыз ету компаниясы Exoterica компаниясымен XTRAN деп аталатын SGML өңдеу бағдарламасы ретінде құрылған. Кейін XTRAN OmniMark деп өзгертілді, ал Exoterica OmniMark Technologies болып қайта аталды. OmniMark-тің қазіргі иелері Stilo International компаниясының бас кеңсесі Ұлыбританияда орналасқан, сонымен қатар Канадада да кеңсесі бар. 1999 жылы OmniMark президенті және бас директоры Джон МакФадден OmniMark 5 бағдарламасын Perl-мен бәсекелесуді жақсарту мақсатында тегін ұсынуға болатынын мәлімдеді. Қазір OmniMark мұндай модель бойынша таралмайды.
Бағдарламалау моделі
OmniMark деректерді кездейсоқ қол жеткізуді қолдайтын статикалық деректер жинағы ретінде емес, бір рет сканерленетін ағын ретінде қарастырады. OmniMark бағдарламасының көп бөлігі condition=>action түріндегі ережелерден тұрады, онда шарт әрекет етуге тиіс деректердің ұзындығын анықтайды, ал әрекет деректермен не істеу керектігін көрсетеді. Шарттың екі түрі бар: элементтік ереже, ол құрылымды құжаттармен ғана (жақсы құрылған XML, жарамды XML немесе SGML) қолданылады және толық элементті таниды: басталу тегі, элементтің мазмұны және аяқталу тегі. Мазмұнда басқа элементтер болуы мүмкін болғандықтан, элементтік ережелер ұялы түрде жұмыс істей алады. OmniMark элементтік ережелердің бір-біріне тәуелсіз анықталуын қамтамасыз ететіндей етіп ұялауды басқарады. Үлгі, құрылымды және құрылымсыз құжаттардың екеуімен де қолданыла алады, мәтіннің ұзындығын таниды. Үлгілер басқа тілдердегі (Python, Perl, awk, ...) реттегіштер сияқты қолданылады, бірақ күрделі өрнектерді жасауды жеңілдететін, ағылшын тіліне жақын синтаксиске ие. Құрылымдық құжатты талдау кезінде үлгілерді талдаушыға кіретін немесе талдаушыдан шығатын мәтінге қолдануға болады.
An element rule, which can only be used with structured documents (well formed XML, valid XML, or SGML), recognizes a complete element: the start tag, the element content, and the end tag. Since the content may hold other elements, element rules can operate in a nested fashion. OmniMark manages the nesting in such a way that the element rules can be defined independently of each other. A pattern, which can be used with both structured and unstructured documents, recognizes a length of text. Patterns are used like regular expressions in other languages (python, Perl, awk, ) but have an English like syntax that facilitates the creation of complex expressions. When parsing a structured document, patterns can be used on text going into the parser or on text coming out of the parser.
Құрылымдық кірісті өңдеу (XML, SGML)
OmniMark кірісті ағын ретінде қарастырады; бағдарлама кіріс деректерін жадында сақтайды, тек деректердің бір бөлігі айнымалыларда сақталған жағдайда ғана. Кіріс ағынымен өтетін кезде, OmniMark мәтінді OmniMark үлгісімен сәйкестендіру мүмкіндігі арқылы түрлендіруді басқаруға қажетті ақпаратты сақтайтын элементтер стегін қолдайды. Әр басталу тегі кездескенде, OmniMark стекке элементтің тағы бір сипаттамасын қосады. Элемент сипаттамасына элементтің атауы, атрибуттардың атаулары, атрибуттардың түрлері мен мәндері, сондай-ақ талдаушыдан алынған басқа да ақпарат (мысалы, бұл элемент бос элемент пе) кіреді. Сәйкес аяқталу тегі кездескенде, элементтің сипаттамасы стек жоғарғы жағынан алынып тасталады. SGML-де кейбір тегтер жіберіліп қалдырылуы мүмкін, бірақ OmniMark тегтердің бар және дұрыс орналасқандай әрекет етеді.
Үлгі коды
Кейбір қолданбаларда құжаттың көп бөлігін жақсы жобаланған жалпы әрекет арқылы өңдеуге болады, сондықтан құжаттың тек бір бөлігіне ғана ерекше өңдеу қажет болады. Бұл бағдарламаның мөлшерін және күрделілігін айтарлықтай азайтады, ал XML құжаттарының жағдайында бағдарламаны кіріс құжаты құрылымындағы өзгерістерге бейім етеді.
Құрылымдық кіріс (SGML)
Бұл бағдарлама қарапайым SGML құжатындағы жойылған тегтерді алмастырып, жақсы құрылған XML-ге ұқсас нәтиже шығарады. Бағдарлама SGML-дегі бос тегтерді XML-дің бос тегтеріне дұрыс түрлендірмейді және SGML құжаттарында қолданылатын көптеген SGML мүмкіндіктерін қолдамайды.