مەن بىر نەچچە يىلدىن بۇيان يۈزلىنىشنى كۆرۈشكە يېتەرلىك دەرىجىدە ئالدىنقى قاتاردا تۇرۇۋاتىمەن: ياش پروگراممېرلار ئۇنىڭ تارىخى مەزمۇنىنى چۈشەنمەي تۇرۇپ ، پروگرامما تۈزۈشنىڭ يېڭى ئەندىزىسى بىلەن ئىشلەيدۇ. ئەلۋەتتە ، بىر نەرسىنى بىلمەسلىك تامامەن چۈشىنىشلىك. تور كۆپ خىل ماھارەت ۋە ئالاھىدىلىككە ئىگە ئىنتايىن چوڭ جاي ، بىز بىلمەيدىغان نەرسىنى ھەمىشە بىلمەيمىز. بۇ ساھەدە ئۆگىنىش بىر قېتىم يۈز بېرىدىغان ۋە ئاخىرلاشقان ئىش بولماستىن ، بەلكى داۋاملىشىۋاتقان سەپەر. دېلو مىسالى: مېنىڭ گۇرۇپپىدىكى بىرەيلەن ئابونتلارنىڭ UI دىكى مەلۇم بىر بەتكۈچتىن يىراقلاشقان-ماڭمىغانلىقىنى بىلگىلى بولامدۇ-يوق؟ مەن JavaScript نىڭ يۈك چۈشۈرۈشتىن بۇرۇنقى پائالىيىتىنى كۆرسەتتىم. ئەمما ئىلگىرى بۇنى بىر تەرەپ قىلغانلار بۇنىڭ مۇمكىنلىكىنى بىلىدۇ ، چۈنكى ئۇلار باشقا تور بېكەتلەردە ساقلانمىغان سانلىق مەلۇماتلارغا قارىتا ئاگاھلاندۇرۇشنىڭ زەربىسىگە ئۇچرىغان ، بۇنىڭ ئۈچۈن ئالدىن قاچىلاش ئادەتتىكى ئەھۋال. مەن يەنە بەتنى يوشۇرۇش ۋە كۆرۈنۈشچانلىقىنى ئۆزگەرتىش ئۈچۈن خىزمەتدىشىمغا كۆرسەتتىم. مەن بۇنى قانداق بىلدىم؟ چۈنكى ئۇ دەسلەپتە JavaScript ئۆگەنگەندە ئۆگەنگەنلىكىم ئۈچۈن ئەمەس ، باشقا بىر تۈردە ئوتتۇرىغا چىققان. ئەمەلىيەت شۇنى ئىسپاتلىدىكى ، زامانىۋى ئالدىنقى قاتاردىكى رامكىلار ئۇلاردىن ئىلگىرىكى تېخنىكا كاتتىباشلىرىنىڭ مۈرىسىدە تۇرماقتا. ئۇلار ئابستراكت تەرەققىيات تەجرىبىلىرىنى ئابىستىراكىت قىلىدۇ ، كۆپىنچە ھاللاردا كۆپچىلىك بىلىشكە تىگىشلىك بولغان ئالدىنقى قاتاردىكى ئۇقۇملارنى بىلىش ياكى تېگىش ئېھتىياجىنى ئازايتىدىغان ، ھەتتا يوقىتىدىغان تېخىمۇ ياخشى ئاچقۇچىلار تەجرىبىسى ئۈچۈن. CSS ئوبيېكت مودېلى (CSSOM) نى ئويلىشىپ كۆرۈڭ. سىز بەلكىم CSS ۋە JavaScript دە ئىشلەيدىغانلارنىڭ بىر تۈركۈم CSSOM تەجرىبىسىگە ئىگە بولۇشىنى ئۈمىد قىلىشىڭىز مۇمكىن ، ئەمما بۇ ھەرگىز ئۇنداق ئەمەس. مەن ھازىر تاللىغان پۇل تۆلىگۈچى ئۈچۈن ئۇسلۇب جەدۋىلىنى قاچىلىشىمىز كېرەك بولغان يەردە ئىشلىگەن ئېلېكترونلۇق سودا تور بېتىنىڭ بىر رېئاكتىپ تۈرى بار ئىدى. مەسىلە شۇكى ، ئۇسلۇب جەدۋىلى ھەر بىر بەتتە يۈكلىنىۋاتاتتى ، ئۇ پەقەت مەلۇم بىر بەتتىلا لازىم ئىدى. بۇنى ئەمەلگە ئاشۇرۇشقا مەسئۇل ئاچقۇچى ئەزەلدىن ئۇسلۇب جەدۋىلىنى ھەرىكەتچان يۈكلەپ باقمىغان. يەنە كېلىپ ، سىز رېئاللىققا ئېرىشمەكچى بولغان ئەنئەنىۋى ئۇسۇلنى ئەمەلدىن قالدۇرغاندا ، بۇنى پۈتۈنلەي چۈشىنىشكە بولىدۇ. CSSOM بەلكىم كۈندىلىك خىزمىتىڭىزدە لازىملىق نەرسە ئەمەس. ئەمما سىز مەلۇم ۋاقىتتا ھەتتا بىر قېتىمدىلا ئۇنىڭ بىلەن ئارىلىشىشىڭىز كېرەك بولۇشى مۇمكىن. بۇ كەچۈرمىشلەر مېنى بۇ ماقالىنى يېزىشقا ئىلھاملاندۇردى. دالىدا نۇرغۇنلىغان تور ئىقتىدارلىرى ۋە تېخنىكىلىرى بار ، كۈندىلىك خىزمىتىڭىزدە بىۋاسىتە تېگىشمەسلىكىڭىز مۇمكىن. بەلكىم سىز تور تەرەققىياتىغا بىر قەدەر يېڭى بولۇپ ، ئۇلارنى پەقەتلا بىلمەسلىكىڭىز مۇمكىن ، چۈنكى سىز ئۇنى چوڭقۇر بىلىشىڭىزنى تەلەپ قىلمايدىغان مەلۇم بىر رامكىنىڭ ئابستراكتسىغا پېتىپ قالغان بولۇشىڭىز مۇمكىن. مەن XML ھەققىدە مەخسۇس سۆزلەيمەن ، نۇرغۇنلىرىمىز بىلىدىغان قەدىمكى تىل HTML بىلەن پۈتۈنلەي ئوخشىمايدۇ. مەن يېقىنقى WHATWG مۇلاھىزىلىرى سەۋەبىدىن بۇنى ئوتتۇرىغا قويماقچى ، XSLT پروگرامما تۈزۈش دەپ ئاتالغان XML گۇرۇپپىسىنىڭ زور بىر قىسمىنى توركۆرگۈچتىن چىقىرىۋېتىش كېرەكلىكىنى ئوتتۇرىغا قويدى. بۇ دەل بىز نەچچە يىلدىن بۇيان بار بولغان كونا ، ھازىرقى تېخنىكا بولۇپ ، ئۇ مېنىڭ گۇرۇپپىمىزدىكى CSSOM ئەھۋالىغا ئوخشاش ئەمەلىي ئىشلارغا ئىشلىتىلىدۇ. ئىلگىرى XSLT بىلەن ھەمكارلىشىپ باققانمۇ؟ بىز بۇ كونا تېخنىكىغا بەكرەك تايىنىپ ، ئۇنىڭ ئىقتىدارلىرىنى XML دائىرىسىدىن ھالقىپ ، بۈگۈنكى رېئال مەسىلىلەرنى ھەل قىلايلى. XPath: مەركىزى API ئەڭ مۇھىم XML تېخنىكىسى بەلكىم بىۋاسىتە XML نۇقتىئىنەزىرىنىڭ سىرتىدا ئەڭ پايدىلىق بولۇشى مۇمكىن XPath ، بۇ سوئال تىلى بولۇپ ، سىز بىر يىلتىز ئېلېمېنتى بار بەلگە دەرىخىدە ھەر قانداق تۈگۈن ياكى خاسلىقنى تاپالايسىز. مېنىڭ XSLT غا بولغان شەخسىي ئامراقلىقىم بار ، ئەمما بۇمۇ XPath غا تايىنىدۇ ، شەخسىي سۆيگۈنى چوقۇم مۇھىم ئورۇنغا قويۇش كېرەك. XSLT نى ئۆچۈرۈۋېتىش توغرىسىدىكى تالاش-تارتىشتا XPath تىلغا ئېلىنمىدى ، شۇڭا يەنىلا رۇخسەت قىلىنغان دەپ ئويلايمەن. بۇ ياخشى ، چۈنكى XPath بۇ يۈرۈشلۈك تېخنىكىلاردىكى مەركىزى ۋە ئەڭ مۇھىم API ، بولۇپمۇ نورمال XML ئىشلىتىشنىڭ سىرتىدا ئىشلىتىدىغان نەرسە تاپماقچى بولغاندا. بۇ ناھايىتى مۇھىم ، چۈنكى CSS تاللىغۇچىلار بېتىڭىزدىكى نۇرغۇن ئېلېمېنتلارنى تاپقىلى بولسىمۇ ، ئەمما ھەممىسىنى تاپالمايدۇ. ئۇندىن باشقا ، CSS تاللىغۇچىلارنى نۆۋەتتىكى DOM دىكى ئورنىغا ئاساسەن ئېلېمېنت تاپقىلى بولمايدۇ. XPath قىلالايدۇ. ھازىر ، بۇنى ئوقۇۋاتقان بەزىلىرىڭىز XPath نى بىلىشى مۇمكىن ، بەزىلىرى بىلمەسلىكى مۇمكىن. XPath بىر قەدەر چوڭ تېخنىكا ساھەسى ، مەن بارلىق ئاساسلارنى ھەقىقىي ئۆگەتمەيمەن ، شۇنداقلا مۇشۇنىڭغا ئوخشاش بىر ماقالىدە سىزگە قىلىشقا تېگىشلىك قالتىس ئىشلارنى كۆرسىتىپ بېرەلمەيمەن. مەن ئۇ ماقالىنى يېزىشنى سىناپ باقتىم ، ئەمما «Smashing» ژۇرنىلىنىڭ ئوتتۇرىچە نەشرى 5000 سۆزدىن ئېشىپ كەتمەيدۇ. مەن ئاللىبۇرۇن ئارتۇق ئىدىم2000 سۆز بولسا ئاساسنىڭ يېرىمى. شۇڭا ، مەن XPath ئارقىلىق قالتىس ئىشلارنى قىلىشقا باشلايمەن ھەمدە بۇ نەرسىلەرنى قىزىقارلىق دەپ قارىسىڭىز ، ئاساس ئۈچۈن ئىشلىتەلەيدىغان بەزى ئۇلىنىشلارنى بېرىمەن. XPath & CSS نى بىرلەشتۈرۈش XPath ئېلېمېنتلارنى سورىغاندا CSS تاللىغۇچىلار قىلالمايدىغان نۇرغۇن ئىشلارنى قىلالايدۇ. ئەمما CSS تاللىغۇچىلار يەنە XPath قىلالمايدىغان بىر قانچە ئىشنى قىلالايدۇ ، يەنى سىنىپ ئىسمى بويىچە سوئال ئېلېمېنتلىرى.
CSS XPath .myClass / * [ئۆز ئىچىگە ئالىدۇ (@class, "myClass")]
بۇ مىسالدا ، CSS .myClass سىنىپ نامىنى ئۆز ئىچىگە ئالغان ئېلېمېنتلارنى سورايدۇ. شۇنىڭ بىلەن بىر ۋاقىتتا ، XPath مىسالى «myClass» تىزمىسى بىلەن خاسلىق سىنىپىنى ئۆز ئىچىگە ئالغان ئېلېمېنتلارنى سورايدۇ. باشقىچە قىلىپ ئېيتقاندا ، ئۇ ھەر قانداق خاسلىقتىكى myClass بىلەن ئېلېمېنتلارنى تاللايدۇ ، بۇنىڭ ئىچىدە .myClass سىنىپ ئىسمى بار ئېلېمېنتلار ، شۇنداقلا .myClass2 دېگەندەك تىزمىلاردىكى «myClass» بار ئېلېمېنتلار بار. بۇ مەنىدىن XPath تېخىمۇ كەڭ. شۇڭا ، ياق. مەن CSS نى تاشلاپ XPath ئارقىلىق بارلىق ئېلېمېنتلارنى تاللاشنى باشلىشىمىز كېرەكلىكىنى تەۋسىيە قىلمايمەن. بۇ نۇقتا ئەمەس. مۇھىم نۇقتا شۇكى ، XPath تور كۆرگۈچ قاتلىمىدىكى كونا تېخنىكا بولسىمۇ ، قارىماققا قارىماققا ئېنىق كۆرۈنمىسىمۇ ، CSS قىلالمايدىغان ۋە يەنىلا ئىنتايىن پايدىلىق ئىشلارنى قىلالايدىغان ئىشلارنى قىلالايدۇ. بىز بۇ ئىككى تېخنىكىنى بىللە ئىشلىتەلەيدىغانلىقىمىز ئۈچۈنلا ئەمەس ، بەلكى بىز بۇ جەرياندا XPath ھەققىدە بىر نەرسە ئۆگىنىدىغانلىقىمىز ئۈچۈن ، ئۇنى دۆلىتىڭىزدىكى باشقا قورالغا ئايلاندۇرىمىز - بەلكىم سىز بىلمەسلىكىڭىز مۇمكىن. مەسىلە شۇكى ، JavaScript نىڭ ھۆججىتى. باھالاش ئۇسۇلى ۋە بىز JavaScript ئۈچۈن CSS API لار بىلەن قوللانغان ھەر خىل سوئال تاللاش ئۇسۇللىرى ماسلاشمايدۇ. مەن ئىشنى باشلاش ئۈچۈن ماس كېلىدىغان سۈرۈشتۈرۈش API ياساپ چىقتىم ، گەرچە ئېتىراپ قىلىنغان بولسىمۇ ، بۇ يەردە قىلىۋاتقان ئىشىمىزدىن ئايرىلغانلىقتىن ، مەن ئۇنىڭغا كۆپ ئويلانمىدىم. بۇ يەردە قايتا ئىشلەتكىلى بولىدىغان سوئال ياسىغۇچىنىڭ بىر قەدەر ئاددىي خىزمەت مىسالى: برايىن راسمۇسسېن يازغان قەلەم سۈرۈشتۈرۈش XPath [forked] گە قاراڭ. مەن ھۆججەت ئوبيېكتىغا ئىككى خىل ئۇسۇلنى قوشتۇم: queryCSSSelectors (بۇ ئاساسلىقى QuerySelectorAll) ۋە queryXPaths. بۇ ئىككەيلەن سوئال سوراش ئوبيېكتىنى قايتۇرىدۇ:
{ queryType: تۈگۈن | string | سان | boolean, نەتىجە: ھەر قانداق [] // html ئېلېمېنتى ، xml ئېلېمېنتى ، تىزما ، سان ، بولان ، queryCSSSelectors: (query: string, تۈزىتىش: boolean) => queryResults, queryXpaths: (query: string, تۈزىتىش: boolean) => queryResults }
QueryCSSSelectors ۋە queryXpaths فۇنكسىيەسى سىز تەمىنلىگەن سوئالنى نەتىجە گۇرۇپپىسىدىكى ئېلېمېنتلار ئۈستىدىن ئىجرا قىلىدۇ ، پەقەت نەتىجە سانلىرى تۈگۈن تۈگۈنى بولسىلا ، ئەلۋەتتە. بولمىسا ، ئۇ قۇرۇق سانلار ۋە تۈگۈن تۈرىدىكى سوئاللارنى قايتۇرىدۇ. ئەگەر تۈزىتىش كىرگۈزۈلگەن مۈلۈك راست بولسا ، ئىقتىدارلار ئۆزىنىڭ سوئال-جاۋابلىرىنى ئۆزگەرتىدۇ. ھېچقانداق ئەھۋال ئاستىدا بۇنى ئىشلەپچىقىرىش مۇھىتىدا ئىشلىتىشكە بولمايدۇ. مەن بۇ ئىككى سوئال API نى بىرلىكتە ئىشلىتىشنىڭ ھەر خىل ئۈنۈمىنى نامايان قىلىش ئۈچۈنلا شۇنداق قىلىۋاتىمەن. مىسال سوئاللىرى مەن ئۇلار قىلالايدىغان بىر قىسىم كۈچلۈك ئىشلارنى ۋە باشقا ئۇسۇللارنىڭ ئورنىدا قانداق ئىشلىتىشكە بولىدىغانلىقىنى كۆرسىتىپ بېرىدىغان ئوخشىمىغان XPath سوئاللىرىغا بىر قانچە مىسال كۆرسەتمەكچى. بىرىنچى مىسال // li / text (). بۇ بارلىق li ئېلېمېنتلىرىنى سورايدۇ ۋە ئۇلارنىڭ تېكىست تۈگۈنىنى قايتۇرىدۇ. شۇڭا ، تۆۋەندىكى HTML نى سۈرۈشتۈرمەكچى بولساق:
- بىر
- ئىككى
- ئۈچ
… بۇ قايتۇرۇلغان نەرسە:
{"queryType": "xpathEvaluate", "results": ["one", "two", "three"], "resultType": "string"}
باشقىچە ئېيتقاندا ، بىز تۆۋەندىكى سانلار گۇرپىسىغا ئېرىشىمىز: ["بىر" ، "ئىككى" ، "ئۈچ"]. ئادەتتە ، سىز li ئېلېمېنتلىرىغا ئېرىشىشنى تەلەپ قىلىپ ، بۇ سوئالنىڭ نەتىجىسىنى سانلار گۇرپىسىغا ئايلاندۇرۇپ ، سانلار گۇرپىسىنى خەرىتىلەپ ، ھەر بىر ئېلېمېنتنىڭ تېكىست تۈگۈنىنى قايتۇرىسىز. ئەمما بىز بۇنى XPath ئارقىلىق تېخىمۇ ئىخچام قىلالايمىز: document.queryXPaths ("// li / text ()"). نەتىجە.
شۇنىڭغا دىققەت قىلىڭكى ، تېكىست تۈگۈنىگە ئېرىشىشنىڭ ئۇسۇلى فۇنكسىيە ئىمزاسىغا ئوخشايدىغان تېكىست () نى ئىشلىتىش. ئۇ ئېلېمېنتنىڭ تېكىست تۈگۈنىنى قايتۇرىدۇ. مىسالىمىزدا ، بەلگە ئىچىدە ئۈچ خىل ئېلېمېنت بار ، ھەر بىرىدە تېكىست بار («بىر» ، «ئىككى» ۋە «ئۈچ»).
تېكىست () سوئالنىڭ يەنە بىر مىسالىغا قاراپ باقايلى. بۇنى بىزنىڭ بەلگە دەپ پەرەز قىلىڭ:
Href خاسلىق قىممىتىنى قايتۇرىدىغان سوئالنى يازايلى: document.queryXPaths ("// a [text () = 'كىرىش'] / @ href"). نەتىجە.
بۇ نۆۋەتتىكى ھۆججەتتىكى XPath سوئال ، ئالدىنقى مىسالغا ئوخشاش ، ئەمما بۇ قېتىم «كىرىش» تېكىستىنى ئۆز ئىچىگە ئالغان ئۇلىنىش (ئېلېمېنت) نىڭ href خاسلىقىنى قايتۇرىمىز. ئەمەلىي قايتىپ كەلدىنەتىجە ["/login.html"]. XPath ئىقتىدارلىرى ئومۇمىي ئەھۋالى بىر قاتار XPath ئىقتىدارلىرى بار ، بەلكىم سىز ئۇلارغا ناتونۇش بولۇشىڭىز مۇمكىن. مېنىڭچە بىلىشكە ئەرزىيدىغان بىر قانچەلىرى بار ، تۆۋەندىكىلەرنى ئۆز ئىچىگە ئالىدۇ:
start-with ئەگەر بىر تېكىست باشقا بىر تېكىست مىسالى بىلەن باشلانغان بولسا ، ئەگەر href خاسلىقى http: دىن باشلىسا ، (@href, 'http:') بىلەن باشلىنىدۇ. مەزمۇننى ئۆز ئىچىگە ئالىدۇ. count بىر سوئالغا قانچە ماس كېلىدىغانلىقىنى ساناپ بېرىدۇ. مەسىلەن ، ساناش (// * [start-with (@href, 'http:']) مەزمۇن تۈگۈنىدىكى قانچە ئۇلىنىشنىڭ href خاسلىقى بار ئېلېمېنتلارنىڭ سانىنى قايتۇرىدۇ ، بۇنىڭدا http: دىن باشلانغان تېكىست بار. substringWavs JavaScript تارماق قىسمىغا ئوخشاش ، سىز بۇ قۇرنى تالاش-تارتىش قىلىپ يوللىغاندىن باشقا. مەسىلەن ، تارماق («مېنىڭ تېكىست» ، 2 ، 4) «y t» نى قايتۇرىدۇ. substring-before بىر قۇرنىڭ باشقا بىر قۇرنىڭ ئالدىدا قايتىدۇ. مەسىلەن ، ئالدىنقى ئورۇنغا قويۇش ("مېنىڭ تېكىست" ، "") "مېنىڭ" نى قايتۇرىدۇ. ئوخشاشلا ، substring-before ("hi", "bye") قۇرۇق قۇرنى قايتۇرىدۇ. substring-after بىر قۇرنىڭ كەينىدىن بىر قۇرنى قايتۇرىدۇ. مەسىلەن ، تارماقتىن كېيىن («مېنىڭ تېكىست» ، «») «تېكىست» نى قايتۇرىدۇ. ئوخشاشلا ، substring-after ("hi", "bye") قۇرۇق قۇرنى قايتۇرىدۇ. نورماللاشتۇرۇش-بوشلۇق بوشلۇق بوشلۇقىنى يېتەكلەش ۋە ئارقىدا قېلىش ۋە ئاق بوشلۇق ھەرپ-بەلگىلەرنىڭ رەت تەرتىپىنى بىر بوشلۇق بىلەن ئالماشتۇرۇش ئارقىلىق تالاش-تارتىش تىزمىسىنى ئاق بوشلۇق بىلەن نورماللاشتۇرىدۇ. ئەگەر تالاش-تارتىش يالغان ، بولمىسا يالغان بولسا ئاق رەڭنى قايتۇرىدۇ. trueReturns boolean true. falseReturns boolean false. concat JavaScript concat بىلەن ئوخشاش نەرسە ، سىز ئۇنى تىزما ئۇسۇلدا ئىجرا قىلمىسىڭىز. ئۇنىڭ ئورنىغا ، سىز باغلىماقچى بولغان بارلىق تىزمىلارنى قويۇڭ. string-length بۇ JavaScript تىزما ئۇزۇنلۇقى بىلەن ئوخشاش ئەمەس ، بەلكى ئۇ بېرىلگەن قۇرنىڭ ئۇزۇنلۇقىنى تالاش-تارتىش قىلىپ قايتۇرىدۇ. تەرجىمە بۇ بىر قۇر ئېلىپ ، ئىككىنچى تالاش-تارتىشنى ئۈچىنچى تاللاشقا ئۆزگەرتىدۇ. مەسىلەن ، تەرجىمە قىلىش ("abcdef", "abc", "XYZ") XYZdef نى چىقىرىدۇ.
بۇ ئالاھىدە XPath ئىقتىدارلىرىدىن باشقا ، ئۇلارنىڭ JavaScript كەسىپداشلىرى بىلەن ئوخشاش ياكى باشقا پروگرامما تىلىدىكى كەسىپداشلار بىلەن ئوخشاش ئىشلەيدىغان باشقا بىر قاتار ئىقتىدارلىرى بار ، بەلكىم سىز بەلكىم پايدىلىق ، مەسىلەن ، پول ، ئۆگزە ، يۇمىلاق ، يىغىندى قاتارلىقلار. تۆۋەندىكى ئۈلگە كۆرسىتىش بۇ ئىقتىدارلارنىڭ ھەر بىرىنى چۈشەندۈرۈپ بېرىدۇ: برايىن راسمۇسسېن يازغان قەلەم XPath رەقەملىك ئىقتىدارلىرىنى كۆرۈڭ. شۇنىڭغا دىققەت قىلىڭكى ، كۆپىنچە تىزمىلارنى كونترول قىلىش ئىقتىدارىغا ئوخشاش ، نۇرغۇن سانلار بىرلا كىرگۈزۈشنى ئالىدۇ. بۇ ئەلۋەتتە ، چۈنكى ئۇلار ئالدىنقى XPath مىسالىدىكىگە ئوخشاش سوئال سوراشقا ئىشلىتىلىشى كېرەك: // li [پول (تېكىست ())> 250] / @ val
ئۇلارنى ئىشلەتسىڭىز ، كۆپىنچە مىساللارغا ئوخشاش ، سىز ئۇنى يولغا ماس كېلىدىغان بىرىنچى تۈگۈندە ئىجرا قىلىسىز. يەنە بەزى تىپ ئۆزگەرتىش ئىقتىدارلىرى بولۇشى مۇمكىن ، چۈنكى سىز JavaScript نىڭ ئاللىبۇرۇن ئۆزىنىڭ تىپ ئۆزگەرتىش مەسىلىسى بار. ئەمما سىز باشقا بىر سانغا قارشى تەكشۈرۈش ئۈچۈن بىر قۇرنى سانغا ئايلاندۇرماقچى بولغان ۋاقىتلىرىڭىزمۇ بولىدۇ. بىر نەرسىنىڭ تۈرىنى بەلگىلەيدىغان ئىقتىدارلار ئاق رەڭ ، سان ، تىزما ۋە تۈگۈن. بۇلار مۇھىم XPath سانلىق مەلۇمات تىپلىرى. تەسەۋۋۇر قىلغىنىڭىزدەك ، بۇ ئىقتىدارلارنىڭ كۆپىنچىسى DOM تۈگۈنى بولمىغان سانلىق مەلۇمات تىپلىرىدا ئىشلىتىلىدۇ. مەسىلەن ، تارماق بۆلەكتىن كېيىن بىز ئاللىبۇرۇن يېپىپ قويغاندەك بىر قۇر ئالىدۇ ، ئەمما ئۇ href خاسلىقىدىن كەلگەن تىزما بولۇشى مۇمكىن. ئۇ پەقەت بىر قۇر بولالايدۇ:
const testSubstringAfter = document.queryXPaths ("substring-after ('hello world', '')");
ئېنىقكى ، بۇ مىسال بىزگە «دۇنيا» سۈپىتىدە نەتىجە گۇرۇپپىسىنى قايتۇرىدۇ. بۇنى ھەرىكەتتە كۆرسىتىش ئۈچۈن ، مەن DOM تۈگۈنى بولمىغان ئىشلارغا قارشى ئىقتىدار ئىشلىتىپ ئۈلگە كۆرسىتىش بېتى قىلدىم: برايىن راسمۇسسېن يازغان قەلەم سۈرۈشتۈرۈش XPath [forked] گە قاراڭ. سىز تەرجىمە فۇنكىسىيەسىنىڭ ھەيران قالارلىق تەرىپىگە دىققەت قىلىشىڭىز كېرەك ، يەنى ئەگەر سىز ئىككىنچى تالاش-تارتىشتا (يەنى سىز تەرجىمە قىلماقچى بولغان ھەرپلەرنىڭ تىزىملىكى) بولسا ھەمدە تەرجىمە قىلىشقا ماس كېلىدىغان ھەرپ بولمىسا ، بۇ ھەرپ چىقىرىشتىن چىقىرىۋېتىلىدۇ. شۇڭا ، بۇ:
تەرجىمە قىلىڭ:
بوشلۇقنى ئۆز ئىچىگە ئالغان تىزمىلارنىڭ نەتىجىسى: ["* * **"]
بۇ «a» ھەرىپىنىڭ يۇلتۇز بەلگىسى (*) غا تەرجىمە قىلىنىۋاتقانلىقىدىن دېرەك بېرىدۇ ، ئەمما نىشان تىزمىسىنى كۆزدە تۇتۇپ تەرجىمىسى بولمىغان باشقا ھەرپلەر پۈتۈنلەي ئۆچۈرۈلگەن. ئاقسۆڭەك بىز قالدۇقتەرجىمە قىلىنغان «a» ھەرپلىرى ئارىسىدا. يەنە كېلىپ ، بۇ سوئال:
تەرجىمە قىلىڭ:
… مەسىلە يوق ھەمدە مۇنداق بىر نەتىجىنى چىقىرىدۇ:
"***** ** **** ** ***** ******* *** ****** ** ****** ******* ** ***"
بەلكىم سىزگە زەربە بېرىشى مۇمكىن ، JavaScript دا XPath تەرجىمە فۇنكسىيەسىنى قىلىدىغان ئىشنى قىلىش ئاسان ئەمەس ، گەرچە نۇرغۇن ئىشلىتىش ئەھۋاللىرىغا قارىماي ، ھەممىسىنى دائىملىق ئىپادىلەش بىلەن ئالماشتۇرۇش بىر تەرەپ قىلالايدۇ. سىز مەن كۆرسەتكەن ئۇسۇلنى ئىشلىتەلەيسىز ، ئەمما ئەگەر سىز قىلماقچى بولغان ھەرپ-بەلگىلەرنى تەرجىمە قىلماقچى بولسىڭىز ، بۇ تولۇق ئەمەس. تۆۋەندىكى ئۈلگە كۆرسىتىش XPath نىڭ تەرجىمە ئىقتىدارىنى JavaScript نەشرى بىلەن تەمىنلەيدۇ: برايىن راسمۇسسېن يازغان قەلەم تەرجىمە ئىقتىدارىنى كۆرۈڭ. بۇنداق نەرسىنى قەيەردە ئىشلىتىشىڭىز مۇمكىن؟ قەيسەر سىفىرلىق مەخپىيلەشتۈرۈشنى ئۈچ ئورۇن بىلەن تولۇقلاشنى ئويلىشىپ كۆرۈڭ (مەسىلەن ، مىلادىدىن ئىلگىرىكى 48-يىلدىن باشلاپ قۇرنىڭ ئۈستىدىكى مەخپىيلەشتۈرۈش):
تەرجىمە قىلىڭ ("قەيسەر رۇبىكوندىن ئۆتمەكچى!", "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz", "XYZABCDEFGHIJKLMNOPQRSTUVWxyzabcdefghijklmnopqrstuvw")
كىرگۈزۈلگەن تېكىست «قەيسەر رۇبىكوندىن ئۆتمەكچى!». نەتىجىدە «Zxbpxo fp mixkkfkd ql zolpp qeb Oryfzlk!» ئوخشىمىغان ئېھتىماللىقلارنىڭ يەنە بىر تېز مىسالى ئۈچۈن ، مەن بىر مېتال كىرگۈزدۈم ، ئۇ تىزما كىرگۈزۈش ۋە تەرجىمە فۇنكسىيەسىنى ئىشلىتىپ تېكىستنى قايتۇرىدۇ ، جۈملىدىن umlaut ئالغان ھەرپلەرنى ئۆز ئىچىگە ئالىدۇ. برايىن راسمۇسسېن يازغان قەلەم مېتال ئىقتىدارىنى كۆرۈڭ.
const metal = (str) => { قايتىش تەرجىمىسى (str, "AOUaou", "ÄÖÜäöü"); }
ئەگەر «Motley Crue قائىدىسى ، دۆڭگە تاش!» تېكىستى بېرىلسە ، «Mötley Crüe rüles, röck ön düdes!» قايتىدۇ. ئېنىقكى ، بۇ ئىقتىدارنىڭ ھەر خىل تەقلىدىي ئىشلىتىلىشى بولۇشى مۇمكىن. ئەگەر سىز بولسىڭىز ، ئۇنداقتا بۇ TVTropes ماقالىسى سىزگە نۇرغۇن ئىلھام بېرىشى كېرەك. XPath ئارقىلىق CSS نى ئىشلىتىش CSP تاللىغۇچنى XPath بىلەن بىللە ئىشلىتىشتىكى ئاساسلىق سەۋەبىمىزنى ئېسىڭىزدە تۇتۇڭ: CSS دەرسنىڭ نېمە ئىكەنلىكىنى خېلى ئوبدان چۈشىنىدۇ ، ھالبۇكى XPath ئارقىلىق قىلالايدىغان ئەڭ ياخشىسى سىنىپ خاسلىقىنى سېلىشتۇرۇش. بۇ كۆپىنچە ئەھۋاللاردا ئىشلەيدۇ. ئەگەر سىز بىرەر ئەھۋالغا يولۇقسىڭىز ، مەسىلەن ، بىرەيلەن .primaryLinks ۋە .primaryLinks2 دەپ ئاتىلىدىغان دەرسلەرنى قۇرغان بولۇپ ، سىز XPath ئارقىلىق .primaryLinks سىنىپىغا ئېرىشىۋاتقان بولسىڭىز ، ئۇنداقتا مەسىلىگە يولۇقۇشىڭىز مۇمكىن. بۇنداق ئەخمەق نەرسە بولمىسىلا ، سىز XPath نى ئىشلىتىشىڭىز مۇمكىن. ئەمما مەن كىشىلەرنىڭ بۇ خىل ئەخمەق ئىشلارنى قىلىدىغان جايلاردا ئىشلىگەنلىكىمنى دوكلات قىلىپ كۆڭلۈم يېرىم بولدى. بۇ يەردە CSS بىلەن XPath نى ئىشلىتىدىغان يەنە بىر ئۈلگە كۆرسىتىش. بۇ كودنى ئىشلىتىپ ھۆججەتنىڭ تۈگۈنى بولمىغان مەزمۇن تۈگۈنىدە XPath نى ئىجرا قىلغاندا نېمە ئىشلارنىڭ يۈز بېرىدىغانلىقىنى كۆرسىتىپ بېرىدۇ. برايىن راسمۇسسېن يازغان قەلەم css ۋە xpath نى بىللە كۆرۈڭ. CSS سۈرۈشتۈرۈش. مۇناسىۋەتلىك مەزمۇنلار بولۇپ ، بۇ ئىككى ئېلېمېنتنى مۇناسىۋەتلىك بۆلەكلەر سىنىپىغا تەقسىملەنگەن بۆلەككە ئېلىپ كېلىدۇ. ئۇنىڭدىن كېيىن ئۈچ «ناچار» سوئال ، يەنى بۇ ئېلېمېنتلار بىلەن مەزمۇن تۈگۈنى سۈپىتىدە ئىجرا قىلغاندا بىز قىلماقچى بولغان ئىشنى قىلمايدىغان سوئاللار. ئۇلارنىڭ نېمە ئۈچۈن سىز ئويلىغاندىن باشقىچە ھەرىكەت قىلىدىغانلىقىنى چۈشەندۈرۈپ بېرەلەيمەن. تىلغا ئېلىنغان ئۈچ ناچار سوئال:
// text (): ھۆججەتتىكى بارلىق تېكىستلەرنى قايتۇرىدۇ. // a / text (): ھۆججەتتىكى ئۇلىنىشلارنىڭ ئىچىدىكى بارلىق تېكىستلەرنى قايتۇرىدۇ. ./a/text (): ھېچقانداق نەتىجىگە ئېرىشەلمەيدۇ.
بۇ نەتىجىلەرنىڭ سەۋەبى شۇكى ، سىزنىڭ مۇھىتىڭىز CSS تەلىپىدىن قايتۇرۇلغان ئېلېمېنت بولسىمۇ ، // پۈتۈن ھۆججەتكە زىت. بۇ XPath نىڭ كۈچلۈكلۈكى. CSS تۈگۈندىن ئەجدادقا ، ئاندىن ئۇ ئەجدادنىڭ قېرىندىشىغا ئۆتەلمەيدۇ ، ھەمدە ئۇ ئاكا-ئۇكىنىڭ ئەۋلادلىرىغا قاراپ ماڭالمايدۇ. ئەمما XPath قىلالايدۇ. بۇ جەرياندا. ئەمما CSS سۈرۈشتۈرۈش ئارقىلىق تاللانغان بالا يوق ، شۇڭا بۇ سوئالمۇ ھېچنىمىگە قايتۇرمايدۇ. بۇ ئاخىرقى كۆرسەتكۈچتە ئۈچ ياخشى سوئال بار:
.// text (), ./text (), normalize-space (./ text ()).
نورماللاشتۇرۇلغان بوشلۇق سوئاللىرى XPath فۇنكسىيەسىنىڭ ئىشلىتىلىشىنى كۆرسىتىپ بېرىدۇ ، ئەمما باشقا سوئاللارغا كىرگۈزۈلگەن مەسىلىنىمۇ تۈزىتىدۇ. HTML مۇنداق قۇرۇلدى:
سېلېن WebDriver ئارقىلىق ئىقتىدار سىنىقىڭىزنى ئاپتوماتلاشتۇرۇش
بۇ سوئال تېكىست تۈگۈنىنىڭ بېشى ۋە ئاخىرىدا بىر قۇر يەم بېرىدۇ.بوشلۇقنى نورماللاشتۇرۇش بۇنى چىقىرىپ تاشلايدۇ. XPath كىرگۈزۈش ئارقىلىق ئاق رەڭدىن باشقا نەرسىنى قايتۇرىدىغان ھەر قانداق XPath ئىقتىدارىنى ئىشلىتىش باشقا ئىقتىدارلارغا ماس كېلىدۇ. تۆۋەندىكى ئۈلگە مىسالدا بىر قانچە مىسال كۆرسىتىلدى: براين راسمۇسسېن يازغان قەلەم xpath ئىقتىدار مىساللىرىنى كۆرۈڭ. بىرىنچى مىسالدا سىز دىققەت قىلىشقا تېگىشلىك مەسىلە كۆرسىتىلدى. كونكرېت قىلىپ ئېيتقاندا ، تۆۋەندىكى كود:
document.queryXPaths ("substring-after (// a / @ href, 'https: //')");
… بىر قۇرنى قايتۇرىدۇ:
"www.smashingmagazine.com/2018/04/feature-testing-selenium-webdriver/"
بۇنىڭ مەنىسى بار ، شۇنداقمۇ؟ بۇ ئىقتىدارلار سانلار گۇرپىسىنى قايتۇرمايدۇ ، بەلكى تاق قۇر ياكى تاق سانلارنى قايتۇرىدۇ. ئىقتىدارنى ھەر قانداق جايدا كۆپ نەتىجە بىلەن ئىجرا قىلىش پەقەت بىرىنچى نەتىجىنى قايتۇرىدۇ. ئىككىنچى نەتىجە بىزنىڭ ھەقىقىي نېمىگە ئېھتىياجلىق ئىكەنلىكىمىزنى كۆرسىتىپ بېرىدۇ:
document.queryCSSSelectors ("a") .queryXPaths ("substring-after (./@href,'https:// ')");
بۇ بىر قاتار ئىككى قۇرنى قايتۇرىدۇ:
["www.smashingmagazine.com/2018/04/feature-testing-selenium-webdriver/"," www.
XPath فۇنكسىيەسىنى JavaScript دىكى ئىقتىدارلارغا ئوخشاش ئۇۋىلاشقا بولىدۇ. شۇڭا ، ئەگەر «Smashing» ژۇرنىلىنىڭ URL قۇرۇلمىسىنى بىلسەك ، تۆۋەندىكى ئىشلارنى قىلالايمىز (قېلىپ خەت نۇسخىسىنى ئىشلىتىش تەۋسىيە قىلىنىدۇ): `translate ( substring ( substring-after (./@ href, 'www.smashingmagazine.com/') , 9), '/', '') `
بۇ ئۇنىڭ نېمە ئىش قىلىدىغانلىقىنى تەسۋىرلەيدىغان باھاغا ئېھتىياجلىق دەرىجىدە سەل مۇرەككەپلىشىپ كېتىۋاتىدۇ: www.smashingmagazine.com/ دىن كېيىنكى بارلىق URL ئادرېسىنى href خاسلىقىدىن ئېلىڭ ، ئالدىنقى توققۇز ھەرپنى ئۆچۈرۈۋېتىڭ ، ئاندىن ئالدىدىكى كەسمە (/) ھەرپنى ھېچنېمىگە تەرجىمە قىلىپ ، ئاخىرىدىكى ئالدى سىزىقتىن قۇتۇلدۇرىمىز. ھاسىل بولغان سانلار گۇرپىسى:
]
تېخىمۇ كۆپ XPath ئىشلىتىش دېلولىرى XPath سىناقتا ھەقىقەتەن پارقىرايدۇ. سەۋەبىنى كۆرۈش تەس ئەمەس ، چۈنكى XPath ئارقىلىق DOM دىكى ھەر بىر ئېلېمېنتنى DOM دىكى ھەر قانداق ئورۇندىن ئېرىشكىلى بولىدۇ ، ئەمما CSS قىلالمايدۇ. سىز نۇرغۇن زامانىۋى قۇرۇلۇش سىستېمىلىرىدا ئىزچىل ساقلانغان CSS سىنىپلىرىغا تايانمايسىز ، ئەمما XPath ئارقىلىق ، DOM قۇرۇلمىسىنىڭ ئۆزگىرىشىدىن قەتئىينەزەر ، ئېلېمېنتنىڭ تېكىست مەزمۇنىنىڭ قانداق بولۇشىغا قارىتا تېخىمۇ كۈچلۈك ماسلىشالايمىز. چىداملىق XPath سىنىقى ئېلىپ بارالايدىغان تېخنىكىلار ئۈستىدە تەتقىقاتلار ئېلىپ بېرىلدى. CSS تاللىغۇچنىڭ بىر نەرسە ئۆزگەرتىلگەنلىكى ياكى ئۆچۈرۈلگەنلىكى ئۈچۈن ، سىناقلارنىڭ مەغلۇپ بولۇشى ۋە مەغلۇپ بولۇشىدىن ناچار نەرسە يوق. كۆپ ئورۇن بەلگىلەشتە XPath مۇ ھەقىقەتەن قالتىس. XPath سوئاللىرىنى ئېلېمېنتقا ماسلاشتۇرۇشنىڭ بىردىن كۆپ ئۇسۇلى بار. CSS بىلەن ئوخشاش. ئەمما XPath سوئاللىرى قايتۇرۇلغان نەرسىلەرنى چەكلەيدىغان تېخىمۇ نىشانلىق ئۇسۇلدا نەرسىلەرگە شۇڭغۇپ ، بىر قانچە مەيدان مۇسابىقە بولۇشى مۇمكىن بولغان كونكرېت مۇسابىقىنى تاپالايسىز. مەسىلەن ، بىز XPath ئارقىلىق div نىڭ ئىچىدىكى مەلۇم بىر h2 ئېلېمېنتىنى قايتۇرالايمىز ، ئۇ دەرھال قېرىنداشلار دىۋىزىيىسىگە ئەگىشىدۇ ، ئۇ ئۆز نۆۋىتىدە سانلىق مەلۇمات- testID = "رەھبەر" خاسلىقى بار بالىلار رەسىم ئېلېمېنتىنى ئۆز ئىچىگە ئالىدۇ:
بۇ ماۋزۇغا ئېرىشمەڭ
بۇ ماۋزۇغا ئېرىشمەڭ
رەھبەر رەسىمىنىڭ بېشى
بۇ سوئال: document.queryXPaths (` // div [ following-sibling :: div [1] / img [@ data-testID = 'leader'] ] / h2 / text () `);
بۇلارنىڭ قانداق بىر يەرگە كېلىدىغانلىقىنى كۆرۈپ باقايلى: برايىن راسمۇسسېن يازغان قەلەم مۇرەككەپ H2 سوئالغا قاراڭ. شۇنداق ، شۇنداق. XPath ئارقىلىق سىناقتا ھەر قانداق ئېلېمېنتقا نۇرغۇن يوللار بار. XSLT 1.0 تۆۋەنلەش مەن Chrome گۇرۇپپىسىنىڭ تور كۆرگۈچتىن XSLT 1.0 قوللاشنى چىقىرىۋېتىشنى پىلانلىغانلىقىنى بالدۇر تىلغا ئالدىم. بۇ ناھايىتى مۇھىم ، چۈنكى XSLT 1.0 ھۆججەت ئۆزگەرتىش ئۈچۈن XML مەركەزلىك پروگرامما ئىشلىتىدۇ ، ئۇ ئۆز نۆۋىتىدە XPath 1.0 غا تايىنىدۇ ، بۇ كۆپىنچە توركۆرگۈچلەردە ئۇچرايدۇ. بۇ ئىش يۈز بەرگەندە ، بىز XPath نىڭ مۇھىم تەركىبىي قىسمىنى يوقىتىمىز. ئەمما XPath نىڭ يېزىقچىلىق سىنىقى ئۈچۈن ھەقىقەتەن قالتىس ئىكەنلىكىنى نەزەردە تۇتقاندا ، XPath نىڭ ئومۇمىي جەھەتتىن تېزلا يوقاپ كېتىشى مۇمكىن ئەمەسلىكىنى بايقىدىم. دېمەك ، مەن كىشىلەرنىڭ بىر ئىقتىدارنى ئېلىپ كەتكەندە قىزىقىدىغانلىقىنى بايقىدىم. بۇ XSLT 1.0 نىڭ ۋاقتى ئۆتكەن ئەھۋال ئاستىدا ئەلۋەتتە توغرا. «خاككېر خەۋەرلىرى» دە كەمسىتىشكە قارشى تالاش-تارتىشلار بىلەن تولغان بىر مۇنازىرە بولۇۋاتىدۇ. بۇ يازمىنىڭ ئۆزى XSLT ئارقىلىق بىلوگ رامكىسى قۇرۇشنىڭ ئېسىل مىسالى. سەنمۇنازىرىنى ئۆزىڭىز ئوقۇيالايسىز ، ئەمما ئۇ JavaScript نىڭ XLST ئۈچۈن بۇ خىل ئەھۋاللارنى بىر تەرەپ قىلىش ئۈچۈن قانداق قىلىپ ئىشلىتىلىشى مۇمكىن. مەن يەنە توركۆرگۈچلەرنىڭ JavaScript نىڭ Saxon XSLT ، XQUERY ۋە XPath ماتورلىرىنىڭ ئېغىزى بولغان SaxonJS نى ئىشلىتىش كېرەكلىكى توغرىسىدىكى تەكلىپلەرنى كۆردۈم. بۇ بىر قىزىقارلىق پىكىر ، بولۇپمۇ Saxon-JS بۇ ئۆلچەملەرنىڭ نۆۋەتتىكى نەشرىنى يولغا قويغاچقا ، XPath ياكى XSLT نىڭ 1.0 دىن ئېشىپ كەتكەن ھەر قانداق نەشرىنى ئىجرا قىلىدىغان توركۆرگۈچ يوق ، شۇنداقلا XQuery نى يولغا قويمايدۇ. مەن Saxonica دىكى Norm Tovey-Walsh ، SaxonJS نىڭ ئارقىسىدىكى شىركەت ۋە Saxon ماتورىنىڭ باشقا نۇسخىلىرىغا يەتتىم. ئۇ: «ئەگەر ھەر قانداق بىر توركۆرگۈچ ساتقۇچى SaxonJS نى زامانىۋى XML تېخنىكىسىنى تور كۆرگۈچكە بىرلەشتۈرۈشنىڭ باشلىنىش نۇقتىسى قىلىشقا قىزىقماقچى بولسا ، بىز ئۇلار بىلەن مۇزاكىرە قىلغانلىقىمىزدىن خۇشال بولدۇق.» - Norm Tovey-Walsh
ئەمما يەنە قوشۇلدى: «ئەگەر بەزىلەر SaxonJS نى ھازىرقى ھالەتتە ئېلىپ توركۆرگۈگە ئۆزگەرتمەي تاشلىۋەتسە كۆڭۈلدىكىدەك ئۇسۇل بولىدۇ دەپ ئويلىسا ، مەن بەك ھەيران قالىمەن. توركۆرگۈچ ساتقۇچى ئۇلارنىڭ تور كۆرگۈچنى ياسىغانلىقى سەۋەبىدىن ، بىز بىرلەشتۈرۈشكە بىز« سىرتتىن »قارىغاندا تېخىمۇ چوڭقۇر قاتلامغا يېقىنلىشالايدۇ.» - Norm Tovey-Walsh.
دىققەت قىلىشقا ئەرزىيدىغىنى شۇكى ، توۋېي ۋالشنىڭ بۇ سۆزى XSLT نىڭ قىممىتىنى چۈشۈرۈش ئۇقتۇرۇشىدىن بىر ھەپتە بۇرۇن ئوتتۇرىغا قويۇلغان. خۇلاسە مەن داۋاملاشتۇرالايمەن. ئەمما بۇنىڭ XPath نىڭ كۈچىنى نامايان قىلىپ ، ئۇنى قانداق قىلىپ چوڭ ئىشلارنى ۋۇجۇدقا چىقىرىشتا ئىشلىتىشنى كۆرسىتىپ بېرىدىغان نۇرغۇن مىساللارنى بېرىشىنى ئۈمىد قىلىمەن. بۇ توركۆرگۈنىڭ كونا تېخنىكىسىنىڭ ئەڭ ياخشى مىسالى ، گەرچە سىز ئۇنىڭ مەۋجۇتلۇقىنى ئەزەلدىن بىلمىسىڭىزمۇ ياكى ئۇنىڭغا ئېرىشىشنى ئويلاپمۇ باقمىغان بولسىڭىزمۇ ، ئۇ يەنىلا نۇرغۇن پايدىلىق. داۋاملىق ئوقۇش
«ئاپتوماتىك تور سىناقلىرىنىڭ تەبىئىي تىل بىلەن بەرداشلىق بېرىش ئىقتىدارىنى ئاشۇرۇش» (ACM رەقەملىك كۇتۇپخانا) مارون ئەيلى ، يۈسۈف باكۇنىي ، نادېر جاللو ۋە رىما كىلانى قاتارلىقلار بۇ ماقالىدە چىداملىق سىناقلارنى يېزىش ئۈچۈن نۇرغۇن XPath مىساللىرى تەمىنلەنگەن. XPath (MDN) ئەگەر XPath نىڭ قانداق ئىشلەيدىغانلىقىنى تەپسىلىي چۈشەندۈرمەكچى بولسىڭىز ، بۇ باشلىنىشتىكى ئەڭ ياخشى جاي. XPath دەرسلىكى (ZVON) نۇرغۇن مىساللار ۋە ئېنىق چۈشەندۈرۈشلەرنىڭ ياردىمىدە ، بۇ دەرسلىكنى ئۆزۈمنىڭ ئۆگىنىشىمدە ئەڭ پايدىلىق دەپ بايقىدىم. XPather بۇ ئۆز-ئارا تەسىر كۆرسىتىدىغان قورال سىزنى كود بىلەن بىۋاسىتە ئىشلىتەلەيدۇ.