Mwen te nan devlopman front-end ase lontan yo wè yon tandans sou ane yo: pi piti devlopè k ap travay ak yon nouvo paradigm nan pwogram san yo pa konprann kontèks istorik la nan li. Li se, nan kou, parfe konprann pa konnen yon bagay. Entènèt la se yon kote ki trè gwo ak yon seri divès kalite konpetans ak espesyalite, epi nou pa toujou konnen sa nou pa konnen. Aprantisaj nan domèn sa a se yon vwayaj kontinyèl olye ke yon bagay ki rive yon fwa epi ki fini. Ka an pwen: Yon moun nan ekip mwen an te mande si li te posib yo di si itilizatè yo navige lwen yon tab patikilye nan UI a. Mwen te fè remake evènman anvan dechaj JavaScript a. Men, moun ki te abòde sa a anvan konnen sa a se posib paske yo te frape ak alèt sou done ki pa sove sou lòt sit, pou ki beforeunload se yon ka itilize tipik. Mwen menm tou mwen te atire atansyon paj Kache ak visibilityChange evènman yo bay kòlèg mwen an pou bon mezi. Ki jan mwen te fè konnen sou sa? Paske li te vini nan yon lòt pwojè, pa paske mwen te etidye sou li lè okòmansman aprann JavaScript. Reyalite a se ke kad modèn front-end yo kanpe sou zepòl yo nan jeyan yo teknoloji ki anvan yo. Yo abstrè pratik devlopman, souvan pou yon eksperyans pwomotè pi bon ki diminye, oswa menm elimine, nesesite pou konnen oswa manyen sa ki tradisyonèlman te esansyèl konsèp devan tout moun pwobableman ta dwe konnen. Konsidere modèl objè CSS (CSSOM). Ou ta ka espere ke nenpòt moun k ap travay nan CSS ak JavaScript gen yon pakèt eksperyans pratik CSSOM, men sa a pa toujou pral ka a. Te gen yon pwojè React pou yon sit e-commerce mwen te travay sou kote nou te bezwen chaje yon stylesheet pou founisè peman an kounye a chwazi. Pwoblèm lan te ke stylesheet la te chaje sou chak paj lè li te sèlman vrèman nesesè sou yon paj espesifik. Pwomotè ki te responsab pou fè sa rive pa t janm chaje yon fèy style dinamik. Yon fwa ankò, sa a se totalman konprann lè React abstrè lwen apwòch tradisyonèl ou ta ka jwenn pou. CSSOM a gen anpil chans pa yon bagay ou bezwen nan travay chak jou ou. Men, li gen anpil chans ou pral bezwen kominike avèk li nan kèk pwen, menm nan yon egzanp yon sèl. Eksperyans sa yo te enspire m pou m ekri atik sa a. Gen anpil karakteristik entènèt ki egziste deja ak teknoloji nan bwa a ke ou pa janm ka manyen dirèkteman nan travay chak jou ou. Petèt ou se jistis nouvo nan devlopman entènèt epi yo tou senpleman pa okouran de yo paske w ap antre nan abstraksyon nan yon fondasyon espesifik ki pa mande pou ou konnen li pwofondman, oswa menm ditou. Mwen pale espesyalman sou XML, ke anpil nan nou konnen se yon lang ansyen ki pa totalman diferan de HTML. Mwen pote sa a akòz diskisyon WHATWG ki sot pase yo sijere ke yon gwo moso nan pil XML ke yo rekonèt kòm pwogramasyon XSLT yo ta dwe retire nan navigatè. Sa a se egzakteman kalite ki pi gran, ki deja egziste teknoloji nou te genyen pou ane ki ta ka itilize pou yon bagay ki pratik kòm sitiyasyon CSSOM ekip mwen an te nan. Èske w te travay ak XSLT anvan? Ann wè si nou apiye lou nan ansyen teknoloji sa a ak ogmante karakteristik li yo deyò kontèks XML pou atake pwoblèm mond reyèl la jodi a. XPath: API Santral la Teknoloji XML ki pi enpòtan an ki se petèt pi itil deyò nan yon pèspektiv XML dwat se XPath, yon lang rechèch ki pèmèt ou jwenn nenpòt ne oswa atribi nan yon pye bwa mak ki gen yon sèl eleman rasin. Mwen gen yon afeksyon pèsonèl pou XSLT, men sa tou depann sou XPath, ak afeksyon pèsonèl yo dwe mete sou kote nan klasman enpòtans. Agiman an pou retire XSLT pa fè okenn mansyone nan XPath, kidonk mwen ta kwè li toujou pèmèt. Sa bon paske XPath se API santral ak pi enpòtan nan seri teknoloji sa a, sitou lè w ap eseye jwenn yon bagay pou itilize deyò nòmal itilizasyon XML. Li enpòtan paske, byenke seleksyon CSS yo ka itilize pou jwenn pi fò nan eleman yo nan paj ou a, yo pa ka jwenn yo tout. Anplis de sa, seleksyon CSS pa ka itilize pou jwenn yon eleman ki baze sou pozisyon aktyèl li nan DOM la. XPath kapab. Koulye a, kèk nan nou li sa a ta ka konnen XPath, ak kèk pa ta ka. XPath se yon zòn trè gwo nan teknoloji, epi mwen pa ka reyèlman anseye tout Basics yo epi tou montre w bagay ki fre yo fè ak li nan yon sèl atik tankou sa a. Mwen aktyèlman te eseye ekri atik sa a, men piblikasyon an mwayèn Smashing Magazine pa depase 5,000 mo. Mwen te deja nan plis pase2,000 mo pandan se sèlman mwatye nan Basics yo. Se konsa, mwen pral kòmanse fè bagay fre ak XPath epi ba ou kèk lyen ke ou ka itilize pou Basics yo si ou jwenn bagay sa a enteresan. Konbine XPath ak CSS XPath ka fè anpil bagay ke seleksyon CSS pa kapab lè w ap mande eleman yo. Men, seleksyon CSS kapab tou fè kèk bagay ke XPath pa kapab, sètadi, eleman rechèch pa non klas la.
CSS XPath .myClass /*[genyen(@klas, "myClass")]
Nan egzanp sa a, CSS mande eleman ki genyen yon non klas .myClass. Pandan se tan, egzanp XPath la mande eleman ki gen yon klas atribi ak fisèl "myClass". Nan lòt mo, li chwazi eleman ki gen myClass nan nenpòt atribi, ki gen ladan eleman ki gen .myClass non klas la - osi byen ke eleman ki gen "myClass" nan fisèl la, tankou .myClass2. XPath se pi laj nan sans sa a. Se konsa, non. Mwen pa sijere ke nou ta dwe jete CSS epi kòmanse chwazi tout eleman atravè XPath. Se pa pwen an. Pwen an se ke XPath ka fè bagay ke CSS pa ka epi li ka toujou trè itil, menm si li se yon teknoloji ki pi gran nan chemine navigatè a epi li ka pa parèt evidan nan premye gade. Ann sèvi ak de teknoloji yo ansanm non sèlman paske nou kapab, men paske nou pral aprann yon bagay sou XPath nan pwosesis la, fè li yon lòt zouti nan pil ou a - yon sèl ou ta ka pa te konnen ki te la tout tan! Pwoblèm lan se ke metòd document.evaluate JavaScript ak divès metòd seleksyon rechèch nou itilize ak API CSS pou JavaScript yo enkonpatib. Mwen te fè yon API rekèt konpatib pou fè nou kòmanse, menm si wi, mwen pa t reflechi anpil nan li paske se yon depa nan sa n ap fè isit la. Isit la se yon egzanp travay jistis senp nan yon konstrukteur rechèch ki kapab itilize ankò: Gade Pen queryXPath [forked] pa Bryan Rasmussen. Mwen te ajoute de metòd sou objè dokiman an: queryCSSSelectors (ki se esansyèlman querySelectorAll) ak queryXPaths. Tou de sa yo retounen yon objè queryResults:
{ queryType: nœuds | fisèl | nimewo | boolean, rezilta: nenpòt[] // eleman html, eleman xml, fisèl, nimewo, boolean, queryCSSSelectors: (rekèt: chaîne, amande: boolean) => queryResults, queryXpaths: (rekèt: chaîne, amendement: boolean) => queryResults }
Fonksyon yo queryCSSSelectors ak queryXpaths kouri rechèch la ou ba yo sou eleman yo nan etalaj la rezilta, osi lontan ke etalaj la rezilta se nan kalite nœuds, nan kou. Sinon, li pral retounen yon rezilta rechèch ak yon etalaj vid ak yon kalite nœuds. Si pwopriyete amann yo mete sou vre, fonksyon yo pral chanje pwòp rezilta rechèch yo. Nan okenn sikonstans sa a ta dwe itilize nan yon anviwònman pwodiksyon. Mwen fè li fason sa a piman yo demontre efè yo divès kalite lè l sèvi avèk de API yo rechèch ansanm. Egzanp Rekèt Mwen vle montre kèk egzanp diferan requêtes XPath ki demontre kèk nan bagay pwisan yo ka fè ak ki jan yo ka itilize nan plas lòt apwòch. Premye egzanp lan se //li/text(). Sa a mande tout eleman li epi retounen nœuds tèks yo. Se konsa, si nou ta mande HTML sa a:
- yon sèl
- de
- twa
... sa a se sa yo retounen:
{"queryType":"xpathEvaluate","results":["yon","de","twa"],"resultType":"string"}
Nan lòt mo, nou jwenn etalaj sa a: ["yon sèl","de","twa"]. Nòmalman, ou ta mande pou eleman li yo jwenn sa, vire rezilta rechèch sa a nan yon etalaj, kat etalaj la, epi retounen ne tèks chak eleman. Men, nou ka fè sa pi kout ak XPath: document.queryXPaths("//li/text()").results.
Remake ke fason pou jwenn yon ne tèks se sèvi ak text(), ki sanble ak yon siyati fonksyon - epi li se. Li retounen ne tèks la nan yon eleman. Nan egzanp nou an, gen twa eleman li nan maketing la, chak ki gen tèks ("yon sèl", "de" ak "twa").
Ann gade yon lòt egzanp yon rekèt text(). Sipoze sa a se maketing nou an:
Ann ekri yon rechèch ki retounen valè atribi href: document.queryXPaths("//a[text() = 'Konekte']/@href").results.
Sa a se yon rechèch XPath sou dokiman aktyèl la, menm jan ak dènye egzanp lan, men fwa sa a nou retounen atribi href nan yon lyen (yon eleman) ki gen tèks la "Enskri". Vrè a tounenrezilta se ["/login.html"]. Apèsi sou fonksyon XPath Gen yon kantite fonksyon XPath, epi w ap pwobableman abitye avèk yo. Gen plizyè, mwen panse, ki vo konnen sou, ki gen ladan sa ki annapre yo:
kòmanse-avèkSi yon tèks kòmanse ak yon lòt egzanp tèks patikilye, kòmanse-avèk(@href, 'http:') retounen vre si yon atribi href kòmanse ak http:. containsSi yon tèks gen yon lòt egzanp tèks patikilye, contains(text(), "Smashing Magazine") retounen vre si yon nod tèks gen mo "Smashing Magazine" nan li nenpòt kote. countReturns yon konte konbyen alimèt ki genyen nan yon rechèch. Pa egzanp, count(//*[starts-with(@href, 'http:']) retounen yon konte sou konbyen lyen nan kontèks la node ki gen eleman ki gen yon atribi href ki gen tèks la kòmanse ak http:. substringWorks tankou JavaScript substring, eksepte ou pase fisèl la kòm yon agiman. Pou egzanp, substring ("tèks mwen an", 2, 4) retounen "y t". substring-beforeReturn pati nan yon fisèl anvan yon lòt fisèl. Pa egzanp, substing-before("tèks mwen an", " ") retounen "mwen". Menm jan an tou, substring-before("hi","bye") retounen yon fisèl vid. substring-afterReturns pati nan yon fisèl apre yon lòt fisèl. Pou egzanp, substing-after ("tèks mwen an", " ") retounen "tèks". Menm jan an tou, substring-after ("hi","bye") retounen yon fisèl vid. normalize-spaceRetourne fisèl agiman an ak espas blanch nòmalize lè w retire espas blan ki mennen ak dèyè epi ranplase sekans karaktè espas blan yo pa yon sèl espas. notReturns yon boolean vre si agiman an fo, sinon fo. trueReturns boolean vre. falseReturns boolean fo. concat Menm bagay ak JavaScript concat, eksepte ou pa kouri li kòm yon metòd sou yon fisèl. Olye de sa, ou mete nan tout fisèl ou vle konkatene. string-lengthSa a pa menm ak JavaScript string-length, men pito retounen longè fisèl yo bay li kòm yon agiman. translateSa a pran yon kòd epi chanje dezyèm agiman an nan twazyèm agiman an. Pa egzanp, tradui ("abcdef", "abc", "XYZ") bay XYZdef.
Akote de fonksyon patikilye XPath sa yo, gen yon kantite lòt fonksyon ki travay menm jan ak tokay JavaScript yo - oswa tokay nan fondamantalman nenpòt lang pwogramasyon - ke ou ta pwobableman jwenn itil tou, tankou etaj, plafon, wonn, sòm, ak sou sa. Demo sa a montre chak nan fonksyon sa yo: Gade fonksyon nimerik Pen XPath [forked] pa Bryan Rasmussen. Remake byen ke, tankou pifò nan fonksyon yo manipilasyon fisèl, anpil nan yo menm nimerik pran yon sèl opinyon. Sa a se, nan kou, paske yo sipoze itilize pou demann, tankou nan dènye egzanp XPath la: //li[etaj(tèks()) > 250]/@val
Si ou sèvi ak yo, menm jan pi fò nan egzanp yo fè, ou pral fini kouri li sou premye ne ki matche ak chemen an. Genyen tou kèk fonksyon konvèsyon kalite ou ta dwe pwobableman evite paske JavaScript deja gen pwòp pwoblèm konvèsyon kalite li yo. Men, ka gen kèk fwa lè ou vle konvèti yon fisèl nan yon nimewo yo nan lòd yo tcheke li kont kèk lòt nimewo. Fonksyon ki mete kalite yon bagay se boolean, nimewo, fisèl, ak ne. Sa yo se kalite done XPath enpòtan yo. Epi kòm ou ta ka imajine, pi fò nan fonksyon sa yo ka itilize sou done ki pa nœuds DOM. Pou egzanp, substring-after pran yon fisèl jan nou te deja kouvri, men li ta ka fisèl ki soti nan yon atribi href. Li kapab tou jis yon fisèl:
const testSubstringAfter = document.queryXPaths("substring-after('bonjou mond',' ')");
Evidamman, egzanp sa a pral ban nou tounen etalaj rezilta yo kòm ["monde"]. Pou montre sa an aksyon, mwen te fè yon paj Demo lè l sèvi avèk fonksyon kont bagay ki pa nœuds DOM: Gade Pen queryXPath [forked] pa Bryan Rasmussen. Ou ta dwe sonje aspè etone nan fonksyon tradui a, ki se ke si ou gen yon karaktè nan dezyèm agiman an (sa vle di, lis karaktè ou vle tradui) epi pa gen okenn karaktè matche yo tradui, karaktè sa a vin retire nan pwodiksyon an. Kidonk, sa a:
translate('Bonjou, non mwen se Inigo Montoya, ou touye papa m, prepare pou mouri','abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ,','*')
… rezilta nan fisèl la, ki gen ladan espas: [" * * ** "]
Sa vle di ke lèt "a" yo ap tradui ak yon asterisk (*), men tout lòt karaktè ki pa gen yon tradiksyon bay fisèl sib la konplètman retire. Espas blan an se tout sa nou reteant karaktè "a" tradui yo. Ankò, demann sa a:
translate('Bonjou, non mwen se Inigo Montoya, ou touye papa m, prepare pou mouri','abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ,','****************************************************')")
… pa gen pwoblèm nan epi li bay yon rezilta ki sanble sa a:
"****** ** **** ** ***** ******* *** ****** ** ****** ******* ** ***"
Li ta ka frape ou ke pa gen okenn fason fasil nan JavaScript fè egzakteman sa fonksyon an tradui XPath fè, byenke pou anpil ka itilize, replaceAll ak ekspresyon regilye ka okipe li. Ou ta ka itilize menm apwòch mwen te demontre a, men sa pa pi bon si tout sa ou vle se tradui fisèl yo. Demo sa a vlope fonksyon tradui XPath pou bay yon vèsyon JavaScript: Gade fonksyon tradui Pen [forked] pa Bryan Rasmussen. Ki kote ou ta ka itilize yon bagay tankou sa a? Konsidere chifreman Caesar Cipher ak yon konpanse twa kote (pa egzanp, chifreman tèt-of-liy soti nan 48 B.C.):
translate ("Seza ap planifye pou l travèse Rubicon!", "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz", "XYZABCDEFGHIJKLMNOPQRSTUVWxyzabcdefghijklmnopqrstuvw")
Antre tèks la "Seza ap planifye pou travèse Rubicon la!" rezilta nan "Zxbpxo fp mixkkfkd ql zolpp qeb Oryfzlk!" Pou bay yon lòt egzanp rapid sou diferan posiblite, mwen te fè yon fonksyon metal ki pran yon antre fisèl epi sèvi ak yon fonksyon tradui pou retounen tèks la, ki gen ladan tout karaktè ki pran umlauts. Gade fonksyon metal Pen [forked] pa Bryan Rasmussen.
const metal = (str) => { retounen tradui(str, "AOUaou","ÄÖÜäöü"); }
Epi, si yo bay tèks la "Motley Crue rules, rock on dudes!", retounen "Mötley Crüe rüles, röck ön düdes!" Li evidan, yon moun ta ka gen tout kalite itilizasyon parody nan fonksyon sa a. Si se ou menm, Lè sa a, atik TVTropes sa a ta dwe ba ou anpil enspirasyon. Sèvi ak CSS ak XPath Sonje rezon prensipal nou pou nou itilize seleksyon CSS ansanm ak XPath: CSS byen konprann sa yon klas ye, tandiske pi bon an ou ka fè ak XPath se konparezon fisèl nan atribi klas la. Sa ap travay nan pifò ka yo. Men, si ou ta janm kouri nan yon sitiyasyon kote, di, yon moun te kreye klas yo te rele .primaryLinks ak .primaryLinks2 epi ou t ap itilize XPath pou jwenn klas .primaryLinks, Lè sa a, ou ta gen anpil chans rankontre pwoblèm. Osi lontan ke pa gen anyen dwòl tankou sa, ou ta pwobableman itilize XPath. Men, mwen tris pou rapòte ke mwen te travay nan kote moun fè kalite sa yo bagay sòt. Isit la nan yon lòt Demo lè l sèvi avèk CSS ak XPath ansanm. Li montre sa k ap pase lè nou itilize kòd la pou kouri yon XPath sou yon ne kontèks ki pa ne dokiman an. Gade Pen css ak xpath ansanm [forked] pa Bryan Rasmussen. Rekèt CSS la se .relatedarticles a, ki chache de eleman yo nan yon div plase yon klas .relatedarticles. Apre sa, gen twa "move" demann, sa vle di, demann ki pa fè sa nou vle yo fè lè yo kouri ak eleman sa yo kòm ne nan kontèks. Mwen ka eksplike poukisa yo konpòte yo yon fason diferan ke ou ta ka espere. Twa move demann yo nan kesyon yo se:
//text(): Retounen tout tèks ki nan dokiman an. //a/text(): Retounen tout tèks anndan lyen nan dokiman an. ./a/text(): Pa retounen okenn rezilta.
Rezon ki fè rezilta sa yo se ke pandan ke kontèks ou a se yon eleman ki retounen nan rechèch la CSS, // ale kont dokiman an antye. Sa a se fòs XPath; CSS pa ka ale soti nan yon node jiska yon zansèt ak Lè sa a, nan yon frè ak sè zansèt sa a, epi mache desann nan yon desandan frè ak sè sa a. Men, XPath kapab. Pandan se tan, ./ kesyone timoun yo nan ne aktyèl la, kote pwen (.) reprezante ne aktyèl la, ak koupe an devan (/) reprezante ale nan kèk nod timoun - si li se yon atribi, eleman, oswa tèks detèmine pa pwochen pati nan chemen an. Men, pa gen okenn pitit yon eleman chwazi pa rechèch la CSS, kidonk rechèch sa a tou retounen pa gen anyen. Gen twa bon demann nan dènye Demo sa a:
.//tèks(), ./tèks(), nòmalize-espas(./tèks()).
Rekèt la nòmalize-espas demontre itilizasyon fonksyon XPath, men tou, rezoud yon pwoblèm ki enkli nan lòt demann yo. HTML a estriktire tankou sa a:
Otomatik tès karakteristik ou yo ak Selenium WebDriver
Rekèt la retounen yon liy liy nan kòmansman ak nan fen ne tèks la,ak nòmalize-espas retire sa a. Sèvi ak nenpòt fonksyon XPath ki retounen yon lòt bagay pase yon boolean ak yon opinyon XPath aplike nan lòt fonksyon. Demo sa a montre yon kantite egzanp: Gade egzanp Pen xpath fonksyon [forked] pa Bryan Rasmussen. Premye egzanp lan montre yon pwoblèm ou ta dwe gade deyò. Espesyalman, kòd sa a:
document.queryXPaths("substring-after(//a/@href,'https://')");
…retounen yon kòd:
"www.smashingmagazine.com/2018/04/feature-testing-selenium-webdriver/"
Li fè sans, pa vre? Fonksyon sa yo pa retounen etalaj men pito yon sèl fisèl oswa yon sèl nimewo. Kouri fonksyon an nenpòt kote ak plizyè rezilta sèlman retounen premye rezilta a. Dezyèm rezilta a montre sa nou reyèlman vle:
document.queryCSSSelectors("yon").queryXPaths("substring-after(./@href,'https://')");
Ki retounen yon etalaj de fisèl:
["www.smashingmagazine.com/2018/04/feature-testing-selenium-webdriver/","www.smashingmagazine.com/2022/11/automated-test-results-improve-accessibility/"]
Fonksyon XPath yo ka enbrike menm jan ak fonksyon nan JavaScript. Kidonk, si nou konnen estrikti URL Smashing Magazine la, nou ta ka fè sa ki annapre yo (li rekòmande pou itilize literal modèl): `tradwi( substring( substring-after(./@href, 'www.smashingmagazine.com/') ,9), '/','')'
Sa a ap vin yon ti jan twò konplèks nan limit ke li bezwen kòmantè ki dekri sa li fè: pran tout URL la soti nan atribi href apre www.smashingmagazine.com/, retire premye nèf karaktè yo, Lè sa a, tradui karaktè an devan koupe (/) nan anyen konsa yo debarase m de fen koupe an devan. Etalaj la ki kapab lakòz:
["feature-testing-selenium-webdriver","otomatik-tès-rezilta-amelyore-aksesibilite"]
Plis ka itilize XPath XPath ka vrèman klere nan tès yo. Rezon ki fè la pa difisil pou wè, kòm XPath ka itilize pou jwenn tout eleman nan DOM a, soti nan nenpòt pozisyon nan DOM a, tandiske CSS pa kapab. Ou pa ka konte sou klas CSS ki rete konsistan nan anpil sistèm konstriksyon modèn, men ak XPath, nou kapab fè alimèt pi solid sou sa ki kontni tèks nan yon eleman ye, kèlkeswa yon estrikti DOM chanje. Te gen rechèch sou teknik ki pèmèt ou fè tès XPath fleksib. Pa gen anyen ki pi mal pase fè tès yo echwe epi yo echwe jis paske yon seleksyon CSS pa travay ankò paske yo te chanje non yon bagay oswa retire. XPath se vrèman gwo tou nan ekstraksyon lokalizasyon miltip. Gen plis pase yon fason yo sèvi ak rekèt XPath matche ak yon eleman. Menm bagay la tou vre ak CSS. Men, rekèt XPath ka fè egzèsis nan bagay sa yo nan yon fason ki pi vize ki limite sa ki vin retounen, ki pèmèt ou jwenn yon matche ak espesifik kote ka gen plizyè alimèt posib. Pou egzanp, nou ka itilize XPath pou retounen yon eleman h2 espesifik ki genyen andedan yon div ki imedyatman swiv yon div frè ak sè ki, nan vire, gen yon eleman imaj timoun ki gen yon atribi data-testID="leader" sou li:
pa jwenn tit sa a
Pa jwenn tit sa a tou
Tèt pou imaj lidè a
Sa a se demann lan: document.queryXPaths(` //div[ sibling-sibling::div[1] /img[@data-testID='lidè'] ] /h2/ tèks () `);
Ann lage yon demonstrasyon pou wè ki jan tout bagay reyini ansanm: Gade Pen Complex H2 Query [forked] pa Bryan Rasmussen. Se konsa, wi. Gen anpil chemen posib nan nenpòt eleman nan yon tès lè l sèvi avèk XPath. XSLT 1.0 depresyasyon Mwen te mansyone byen bonè ke ekip Chrome a planifye pou retire sipò XSLT 1.0 nan navigatè a. Sa enpòtan paske XSLT 1.0 sèvi ak pwogramasyon ki konsantre sou XML pou transfòmasyon dokiman ki, nan vire, depann sou XPath 1.0, ki se sa yo jwenn nan pifò navigatè yo. Lè sa rive, nou pral pèdi yon eleman kle nan XPath. Men, bay lefèt ke XPath se reyèlman bon pou ekri tès yo, mwen jwenn li fasil ke XPath an antye pral disparèt nenpòt ki lè byento. Sa te di, mwen te remake ke moun yo vin enterese nan yon karakteristik lè yo retire li. Epi sa a sètènman vre nan ka a nan XSLT 1.0 yo te obsolèt. Gen yon diskisyon antye k ap pase nan Hacker News plen ak agiman kont deprevansyon an. Pòs la li menm se yon bon egzanp pou kreye yon fondasyon blog ak XSLT. Ou menmka li diskisyon an pou tèt ou, men li antre nan ki jan JavaScript ta ka itilize kòm yon shim pou XLST jere kalite sa yo. Mwen te wè tou sijesyon ke navigatè yo ta dwe itilize SaxonJS, ki se yon pò pou motè Saxon XSLT, XQUERY, ak XPath JavaScript yo. Sa a se yon lide enteresan, espesyalman kòm Saxon-JS aplike vèsyon aktyèl la nan espesifikasyon sa yo, tandiske pa gen okenn navigatè ki aplike nenpòt vèsyon nan XPath oswa XSLT pi lwen pase 1.0, e pa gen okenn ki aplike XQuery. Mwen te kontakte Norm Tovey-Walsh nan Saxonica, konpayi an dèyè SaxonJS ak lòt vèsyon motè Saxon. Li te di: "Si nenpòt machann navigatè te enterese nan pran SaxonJS kòm yon pwen depa pou entegre teknoloji modèn XML nan navigatè a, nou ta kontan diskite sou li ak yo." - Norm Tovey-Walsh
Men tou te ajoute: "Mwen ta trè etone si nenpòt moun te panse ke pran SaxonJS nan fòm li ye kounye a epi jete li nan bati navigatè a san okenn chanjman ta dwe apwòch ideyal la. Yon machann navigatè, pa nati a nan lefèt ke yo bati navigatè a, ta ka apwoche entegrasyon an nan yon nivo pi pwofon ke nou ka 'soti nan deyò'. "- Norm Tovey-Walsh
Li enpòtan pou remake ke kòmantè Tovey-Walsh yo te vini apeprè yon semèn anvan anons XSLT depresyasyon. Konklizyon Mwen te kapab kontinye ak sou. Men, mwen espere ke sa a te demontre pouvwa a nan XPath ak ba ou anpil egzanp ki montre kouman yo sèvi ak li pou reyalize gwo bagay. Li se yon egzanp pafè sou ansyen teknoloji nan pile navigatè a ki toujou gen anpil sèvis piblik jodi a, menm si ou pa janm konnen li te egziste oswa pa janm konsidere rive pou li. Pli lwen Lekti
Maroun Ayli, Youssef Bakouny, Nader Jalloul, ak Rima Kilany, Maroun Ayli, Youssef Bakouny, "Amelyore Rezilyans Tès Entènèt Otomatik ak Lang Natirèl" (ACM Digital Library) Atik sa a bay anpil egzanp XPath pou ekri tès fleksib. XPath (MDN) Sa a se yon kote ekselan pou kòmanse si ou vle yon eksplikasyon teknik ki detaye ki jan XPath fonksyone. Leson patikilye XPath (ZVON) Mwen te jwenn leson patikilye sa a pi itil nan pwòp aprantisaj mwen, gras ak yon pakèt egzanp ak eksplikasyon klè. XPatherSa a zouti entèaktif pèmèt ou travay dirèkteman ak kòd la.