Кіріспе
XPath 2.0 – World Wide Web Consortium, W3C ұйымы анықтаған XPath тілінің нұсқасы. Ол 2007 жылғы 23 қаңтарда ұсыным ретінде бекітілді. W3C ұсынымы ретінде 2014 жылғы 10 сәуірде XPath 3.0 оны ығыстырды. XPath негізінен XML құжатының бөліктерін таңдау үшін қолданылады. Осы мақсатта XML құжаты түйіндер ағашы ретінде модеделденеді. XPath құжат ағашы арқылы иерархиялық бағытталған жолмен түйіндерді таңдауға мүмкіндік береді. Бұл тіл алдыңғы нұсқасы XPath 1.0-ға қарағанда әлдеқайда кеңейтілген, сондай-ақ дерек моделі және типтер жүйесі сияқты негізгі ұғымдары өзгерді. Сондықтан екі тіл нұсқалары жеке мақалаларда сипатталған. XPath 2.0 XSLT 2.0 тілінің кіші тілі ретінде қолданылады, сонымен қатар ол XQuery 1.0 тілінің де кіші тілі болып табылады. Бұл үш тілдің барлығы да бірдей дерек моделін (XDM), типтер жүйесін және функциялар кітапханасын бөліседі, бірге әзірленді және бір күні жарияланды.
Деректер моделі
XPath 2.0-дағы әрбір мән элементтердің тізбегін білдіреді. Бұл элементтер түйіндер немесе атомдық мәндер болуы мүмкін. Жеке түйін немесе атомдық мән бірлік тізбек деп саналады. Тізбектер біріне ішінде бірі орналастырылмайды. Түйіндер жеті түрлі болады, олар XML синтаксисіндегі әртүрлі құрылымдарға сәйкес келеді: элементтер, атрибуттар, мәтіндік түйіндер, түсініктемелер, өңдеу нұсқаулары, атау кеңістігі түйіндері және құжат түйіндері. (Құжат түйіні XPath 1.0-дағы түбір түйіннің орнына келеді, себебі XPath 2.0 моделі ағаштардың басқа түйін түрлеріне, әсіресе элементтерге тірелуіне мүмкіндік береді.) Түйіндер типтелген немесе типтелмеген болуы мүмкін. Түйін XML схемасына сәйкес тексеру нәтижесінде типті қабылдайды. Егер элемент немесе атрибут схемада анықталған нақты күрделі типке немесе қарапайым типке сәтті тексерілсе, онда сол типтің атауы түйінге түсініктеме ретінде тіркеледі және сол түйінге қолданылатын операциялардың нәтижесін анықтайды: мысалы, сұрыптау кезінде бүтін сан ретінде белгіленген түйіндер бүтін сан ретінде сұрыпталады. Атомдық мәндер XML схемасының сипаттамасында анықталған 19 бастапқы типтің кез келгеніне (мысалы, string, boolean, double, float, decimal, dateTime, QName және т.б.) жатуы мүмкін. Олар сондай-ақ осы бастапқы типтердің бірінен туындаған типке жатуы мүмкін: integer немесе Name сияқты кіріктірілген туынды типке немесе пайдаланушы жасаған схемада анықталған пайдаланушы анықтаған туынды типке жатуы мүмкін.
Жүйенің түрі
XPath 2.0 типтік жүйесі бір тілде күшті және әлсіз типтеуді біріктіретінімен ерекшеленеді. Арифметикалық амалдар мен логикалық салыстырулар сияқты операциялар операндар ретінде атомдық мәндерді талап етеді. Егер операнд түйін болса (мысалы, @price * 1.2), онда түйін атомдық мәнді алу үшін автоматты түрде атомдалады. Егер кіріс құжаты схема бойынша тексерілген болса, түйінде әдетте типтік белгілеме болады, ол нәтижедегі атомдық мәннің типін анықтайды (мысалы, бұл жағдайда баға атрибуты ондық сан типіне ие болуы мүмкін). Егер ешқандай схема қолданылмаса, түйін типтелмеген болады, ал нәтижедегі атомдық мәннің типі типтелмегенАтомдық болады. Типтелген атомдық мәндер оларды қолданылатын контекст үшін тиісті типке ие екенін қамтамасыз ету үшін тексеріледі: мысалы, күнді санға көбейтуге болмайды. Керісінше, типтелмеген атомдық мәндер әлсіз типтеу қағидаларын сақтайды: олар автоматты түрде қолданылатын операцияға сәйкес келетін типке түрлендіріледі: мысалы, арифметикалық операция кезінде типтелмеген атомдық мән қос нүктелі сан типіне түрлендіріледі.
Жолдар өрнектері
XPath 1.0 орналасу жолдары XPath 2.0-да жол өрнектері деп аталады. Бұл ресми емес түрде жол өрнегі – "/" операторымен бөлінген қадамдар тізбегі, мысалы a/b/c (бала::a/бала::b/бала::c-ның қысқартылған түрі). Дегенмен, формальды түрде "/" – бұл оң жағындағы өрнекті сол жағындағы өрнекпен таңдалған әрбір элементке қолданатын екілік оператор. Мысалы, a өрнегі контексттік түйіннің <a> деп аталатын барлық бала элементтерін таңдайды; child::b өрнегі осы түйіндердің әрқайсысына қолданылады, <a> элементтерінің барлық <b> балаларын таңдайды; және child::c өрнегі осы тізбектегі әрбір түйінге қолданылады, бұл осы <b> элементтерінің барлық <c> балаларын таңдайды. "/" операторы XPath 2.0-да кеңейтілді, бұл кез келген өрнекті операнд ретінде пайдалануға мүмкіндік береді: XPath 1.0-да оң жақ әрқашан осьтік қадам болды. Мысалы, оң жақта функцияны шақыруға болады. Оператордың типтеу ережелері бірінші операндтың нәтижесі түйіндер тізбегі болуын талап етеді. Оң жақ операнд түйіндерді немесе атомдық мәндерді (бірақ олардың араласуын емес) қайтара алады. Нәтиже түйіндерден тұрса, дубликаттар жойылады және түйіндер құжат ретімен қайтарылады, бұл рет түпнұсқа XML ағашындағы түйіндердің салыстырмалы орналасуымен анықталады. Көп жағдайда "/" операторының операндалары осьтік қадамдар болады: олар XPath 1.0-дан көп өзгермеген және XPath 1.0 туралы мақалада сипатталған.
Басқа операторлар
XPath 2.0-да қол жетімді басқа операторлар мыналар: Операторлар сандарға, күндерге және уақыт аралықтарына арифметикалық амалдар жасайды. Жалпы салыстыру: кез келген тізімдерді салыстыру. Егер әр тізімнен алынған бір жұп элемент салыстыру шартын орындаса, нәтижесі "true" болады. Мән салыстыру: жеке мәндерді салыстыру. Түйін сәйкестігін салыстыру: егер екі оператор да бір түйін болса, "true" болады. Түйіндердің құжат бойынша орналасуын салыстыру. Түйіндер тізімін жиын ретінде қарастырып, жиынның біріктірілісін, қиылысын немесе айырмасын анықтау. Бульдік байланыс және дизъюнкция. Жоқ (not) функциясын қолдану арқылы жосықсыздық (негация) орындалады. Сандық диапазонды анықтайды, мысалы, 1-ден 10-ға дейін. Мәннің белгілі бір типке жататынын анықтайды. Мәннің белгілі бір типке түрлендірілетінін тексереді. Мәннің белгілі бір типке түрлендірілу мүмкіндігін тексереді. Шартты өрнектер мына синтаксис арқылы жазылуы мүмкін. XPath 2.0 сонымен қатар for өрнегін ұсынады, ол XQuery-дегі FLWOR өрнегінің кіші бөлігі болып табылады. Бұл өрнек X өрнегінің нәтижесіндегі әрбір мән үшін Y өрнегін бағалайды және сол мәнге $x айнымалысы арқылы сілтеме жасайды.
Operators Effect Arithmetic on numbers, dates, and durations General comparison: compare arbitrary sequences. The result is true if any pair of items, one from each sequence, satisfies the comparison Value comparison: compare single items Compare node identity: true if both operands are the same node Compare node position, based on document order Compare sequences of nodes, treating them as sets, returning the set union, intersection, or difference boolean conjunction and disjunction. Negation is achieved using the not function. defines an integer range, for example 1 to 10 determines whether a value is an instance of a given type converts a value to a given type tests whether a value is convertible to a given type
Conditional expressions may be written using the syntax
XPath 2.0 also offers a for expression, which is a small subset of the FLWOR expression from XQuery. The expression evaluates the expression Y for each value in the result of expression X in turn, referring to that value using the variable reference $x.
Артқа қарай үйлесімділік
Деректер моделі мен типтік жүйедегі өзгерістерге байланысты, XPath 2.0-дағы барлық өрнектер XPath 1.0-дағыдай дәл сондай әсерге ие болмайды. Басты айырмашылық – XPath 1.0 типтерді түрлендіруде көбірек ыңғайлылық танытқан, мысалы, екі жолдың ("4" > "4.0") салыстырылуы мүмкін болған, бірақ бұл сандық салыстыру ретінде жүзеге асырылған; ал XPath 2.0-да бұл екі мән контекстік түрде анықталған салыстыру ережесі бойынша жолдар ретінде салыстырылады. Көшуді жеңілдету үшін XPath 2.0 орындалу режимін анықтайды, онда семантика XPath 1.0-дың мінез-құлқына ең жақын болу үшін өзгертіледі. XSLT 2.0 пайдаланғанда, бұл режим xsl:stylesheet элементіндегі атрибут ретінде version="1.0" деп белгілеу арқылы қосылады. Бұл толыққанды 100% үйлесімділікті қамтамасыз етпейді, бірақ қалған айырмашылықтар көбінесе ерекше жағдайларда ғана кездесуі мүмкін.
Қолдау
XPath 2.0 қолдауы әлі де шектеулі.