Bol som vo vývoji front-end dosť dlho na to, aby som v priebehu rokov videl trend: mladší vývojári pracujúci s novou paradigmou programovania bez toho, aby rozumeli jej historickému kontextu. Je, samozrejme, úplne pochopiteľné, že niečo neviem. Web je veľmi veľké miesto s rôznorodým súborom zručností a špecialít a nie vždy vieme, čo nevieme. Učenie sa v tejto oblasti je skôr prebiehajúca cesta než niečo, čo sa raz stane a skončí. Príklad: Niekto z môjho tímu sa opýtal, či je možné zistiť, či používatelia prechádzajú z konkrétnej karty v používateľskom rozhraní. Poukázal som na udalosť JavaScriptu beforeunload. Ale tí, ktorí to už riešili, vedia, že je to možné, pretože boli zasiahnutí upozorneniami o neuložených údajoch na iných stránkach, pre ktoré je typickým prípadom použitia skôr uvoľnenie. Na stránkuSkryť a zviditeľniťZmeniť udalosti som pre istotu upozornil aj kolegu. Ako som o tom vedel? Pretože to prišlo v inom projekte, nie preto, že som to študoval, keď som sa spočiatku učil JavaScript. Faktom je, že moderné front-end frameworky stoja na pleciach technologických gigantov, ktorí im predchádzali. Abstrahujú vývojové postupy, často pre lepšiu vývojársku skúsenosť, ktorá znižuje alebo dokonca eliminuje potrebu poznať alebo dotýkať sa toho, čo boli tradične základné koncepty front-endu, ktoré by každý pravdepodobne mal vedieť. Zvážte objektový model CSS (CSOM). Môžete očakávať, že každý, kto pracuje v CSS a JavaScript, má veľa praktických skúseností s CSSOM, ale nie vždy to tak bude. Pracoval som na projekte React pre stránku elektronického obchodu, kde sme potrebovali načítať šablónu so štýlmi pre aktuálne vybraného poskytovateľa platieb. Problém bol v tom, že šablóna so štýlmi sa načítala na každej stránke, keď bola skutočne potrebná len na konkrétnej stránke. Vývojár, ktorého úlohou to bolo uskutočniť, nikdy dynamicky nenačítal šablónu so štýlmi. Opäť je to úplne pochopiteľné, keď React abstrahuje od tradičného prístupu, po ktorom ste siahli. CSSOM pravdepodobne nie je niečo, čo potrebujete vo svojej každodennej práci. Je však pravdepodobné, že v určitom okamihu s ním budete musieť interagovať, dokonca aj v jednorazovom prípade. Tieto skúsenosti ma inšpirovali k napísaniu tohto článku. Vo voľnej prírode existuje veľa existujúcich webových funkcií a technológií, ktorých sa pri každodennej práci možno nikdy nedotknete. Možno ste vo vývoji webu celkom nováčik a jednoducho si ich neuvedomujete, pretože ste ponorení do abstrakcie špecifického rámca, ktorý nevyžaduje, aby ste ho poznali hlboko alebo dokonca vôbec. Hovorím konkrétne o XML, o ktorom mnohí z nás vedia, že je to staroveký jazyk, ktorý nie je úplne odlišný od HTML. Prinášam to kvôli nedávnym diskusiám o WHATWG, ktoré naznačujú, že významná časť zásobníka XML známa ako programovanie XSLT by sa mala z prehliadačov odstrániť. Toto je presne ten druh staršej existujúcej technológie, ktorú máme už roky a ktorá by sa dala použiť na niečo také praktické, ako je situácia CSSOM, v ktorej sa môj tím nachádzal. Pracovali ste už s XSLT? Pozrime sa, či sa výrazne oprieme o túto staršiu technológiu a využijeme jej funkcie mimo kontextu XML, aby sme dnes riešili skutočné problémy. XPath: Centrálne API Najdôležitejšou technológiou XML, ktorá je možno najužitočnejšia mimo priamej perspektívy XML, je XPath, dopytovací jazyk, ktorý vám umožňuje nájsť akýkoľvek uzol alebo atribút v strome značiek s jedným koreňovým prvkom. Mám osobnú náklonnosť k XSLT, ale to sa tiež spolieha na XPath a osobná náklonnosť musí byť pri hodnotení dôležitosti odložená bokom. Argument na odstránenie XSLT nespomína XPath, takže predpokladám, že je stále povolený. To je dobré, pretože XPath je ústredným a najdôležitejším API v tejto sade technológií, najmä keď sa snažíte nájsť niečo, čo by sa dalo použiť mimo bežného používania XML. Je to dôležité, pretože zatiaľ čo selektory CSS možno použiť na nájdenie väčšiny prvkov na vašej stránke, nemôžu ich nájsť všetky. Okrem toho selektory CSS nemožno použiť na nájdenie prvku na základe jeho aktuálnej pozície v DOM. XPath môže. Niektorí z vás, ktorí to čítate, možno poznáte XPath a niektorí možno nie. XPath je pomerne veľká oblasť technológie a nemôžem v skutočnosti naučiť všetky základy a tiež vám ukázať skvelé veci, ktoré sa s tým dajú robiť, v jedinom článku, ako je tento. V skutočnosti som sa pokúsil napísať tento článok, ale priemerná publikácia časopisu Smashing Magazine nepresahuje 5 000 slov. Bol som už na viac ako2 000 slov, zatiaľ čo len v polovici základov. Takže začnem robiť skvelé veci s XPath a dám vám niekoľko odkazov, ktoré môžete použiť na základy, ak vás tieto veci budú zaujímať. Kombinácia XPath a CSS XPath dokáže robiť veľa vecí, ktoré selektory CSS pri dopytovaní prvkov nedokážu. Selektor CSS však môže robiť aj niekoľko vecí, ktoré XPath nedokáže, konkrétne dopytovať prvky podľa názvu triedy.

CSS XPath .moja trieda /*[contains(@class, "myClass")]

V tomto príklade CSS dopytuje prvky, ktoré obsahujú názov triedy .myClass. Medzitým príklad XPath zisťuje prvky, ktoré obsahujú triedu atribútov s reťazcom „myClass“. Inými slovami, vyberá prvky s myClass v ľubovoľnom atribúte, vrátane prvkov s názvom triedy .myClass – ako aj prvkov s „mojatrieda“ v reťazci, ako napríklad .myClass2. XPath je v tomto zmysle širší. Takže nie. Nenavrhujem, že by sme mali vyhodiť CSS a začať vyberať všetky prvky cez XPath. O to nejde. Ide o to, že XPath dokáže veci, ktoré CSS nedokáže a stále by mohol byť veľmi užitočný, aj keď ide o staršiu technológiu v zásobníku prehliadača a na prvý pohľad sa to nemusí zdať zrejmé. Využime tieto dve technológie spolu nielen preto, že môžeme, ale aj preto, že sa v procese naučíme niečo o XPath, čím sa z neho stane ďalší nástroj vo vašom balíku – taký, o ktorom ste možno nevedeli, že tu celý čas bol! Problém je v tom, že metóda document.evaluate jazyka JavaScript a rôzne metódy výberu dotazov, ktoré používame s rozhraniami CSS API pre JavaScript, nie sú kompatibilné. Vytvoril som kompatibilné dopytovacie API, aby sme mohli začať, aj keď je pravda, že som o tom veľa nepremýšľal, pretože je to odklon od toho, čo tu robíme. Tu je pomerne jednoduchý pracovný príklad konštruktora dotazov na opakované použitie: Pozrite si Pen queryXPath [forked] od Bryana Rasmussena. Do objektu dokumentu som pridal dve metódy: queryCSSSelectors (čo je v podstate querySelectorAll) a queryXPaths. Obe tieto vrátia objekt queryResults:

{ dotaz Typ: uzly | reťazec | číslo | boolovská hodnota, výsledky: any[] // html elementy, xml elementy, strings, numbers, booleans, queryCSSSelectors: (dotaz: reťazec, zmena: boolean) => queryResults, queryXpaths: (dopyt: reťazec, doplnenie: boolean) => queryResults }

Funkcie queryCSSSelectors a queryXpaths spúšťajú dotaz, ktorý im zadáte, nad prvkami v poli výsledkov, pokiaľ je pole výsledkov samozrejme typu uzly. V opačnom prípade vráti queryResult s prázdnym poľom a typom uzlov. Ak je vlastnosť zmeny nastavená na hodnotu true, funkcie zmenia svoje vlastné queryResults. Za žiadnych okolností by sa to nemalo používať v produkčnom prostredí. Robím to týmto spôsobom čisto preto, aby som demonštroval rôzne účinky spoločného používania dvoch rozhraní API. Príklady dopytov Chcem ukázať niekoľko príkladov rôznych dotazov XPath, ktoré demonštrujú niektoré zo silných vecí, ktoré môžu robiť, a ako ich možno použiť namiesto iných prístupov. Prvým príkladom je //li/text(). Toto spýta všetky prvky li a vráti ich textové uzly. Ak by sme sa teda pýtali na nasledujúci kód HTML:

  • jeden
  • dva
  • tri

...toto sa vracia:

{"queryType":"xpathEvaluate","results":["one","two","three"],"resultType":"string"}

Inými slovami, dostaneme nasledujúce pole: ["jeden","dva","tri"]. Normálne by ste sa pýtali na prvky li, aby ste to získali, premenili výsledok tohto dotazu na pole, namapovali pole a vrátili textový uzol každého prvku. Ale môžeme to urobiť stručnejšie s XPath: document.queryXPaths("//li/text()").výsledky.

Všimnite si, že spôsob, ako získať textový uzol, je použiť text (), ktorý vyzerá ako podpis funkcie – a je. Vráti textový uzol prvku. V našom príklade sú v značke tri prvky li, z ktorých každý obsahuje text („jeden“, „dva“ a „tri“). Pozrime sa na ďalší príklad dotazu text(). Predpokladajme, že toto je naše označenie: Prihláste sa

Napíšme dotaz, ktorý vráti hodnotu atribútu href: document.queryXPaths("//a[text() = 'Prihlásiť sa']/@href").výsledky.

Toto je dotaz XPath na aktuálny dokument, rovnako ako posledný príklad, ale tentoraz vrátime atribút href odkazu (prvku), ktorý obsahuje text „Prihlásiť sa“. Skutočné sa vrátilovýsledkom je ["/login.html"]. Prehľad funkcií XPath Existuje množstvo funkcií XPath a pravdepodobne ich nepoznáte. Myslím si, že existuje niekoľko, o ktorých sa oplatí vedieť, vrátane nasledujúcich:

begin-withAk text začína konkrétnym iným textovým príkladom, begin-with(@href, 'http:') vráti true, ak atribút href začína http:. obsahujeAk text obsahuje konkrétny príklad iného textu, obsahuje(text(), "Smashing Magazine") vráti hodnotu true, ak textový uzol kdekoľvek obsahuje slová "Smashing Magazine". countVrátia počet zhôd s dopytom. Napríklad count(//*[starts-with(@href, 'http:']) vráti počet odkazov v kontextovom uzle s prvkami s atribútom href, ktorý obsahuje text začínajúci na http:. substringFunguje ako podreťazec JavaScriptu, ibaže reťazec odošlete ako argument. Napríklad substring("môj text", 2, 4) vráti "y t". substring-beforeVráti časť reťazca pred iným reťazcom. Napríklad substing-before("môj text", " ") vráti "môj". Podobne substring-before("hi","bye") vráti prázdny reťazec. substring-afterVráti časť reťazca za iným reťazcom. Napríklad substing-after("môj text", " ") vráti "text". Podobne substring-after("hi","bye") vráti prázdny reťazec. normalize-space Vráti reťazec argumentu s bielymi znakmi normalizovanými odstránením počiatočných a koncových bielych znakov a nahradením sekvencií bielych znakov jednou medzerou. notVracia boolovskú hodnotu true, ak je argument nepravdivý, v opačnom prípade vracia hodnotu false. true Vracia boolean true. false Vráti booleovskú hodnotu false. concatTo isté ako JavaScript concat, ibaže ho nespúšťate ako metódu na reťazci. Namiesto toho vložíte všetky reťazce, ktoré chcete zreťaziť. string-lengthTo nie je to isté ako JavaScript string-length, ale skôr vráti dĺžku reťazca, ktorý je daný ako argument. translateTo vezme reťazec a zmení druhý argument na tretí argument. Napríklad translate("abcdef", "abc", "XYZ") vypíše XYZdef.

Okrem týchto konkrétnych funkcií XPath existuje množstvo ďalších funkcií, ktoré fungujú rovnako ako ich náprotivky v jazyku JavaScript – alebo náprotivky v podstate v akomkoľvek programovacom jazyku – ktoré by ste pravdepodobne tiež považovali za užitočné, ako napríklad podlaha, strop, kruh, súčet atď. Nasledujúca ukážka ilustruje každú z týchto funkcií: Pozrite si Numerické funkcie pera XPath [rozdvojené] od Bryana Rasmussena. Všimnite si, že ako väčšina funkcií na manipuláciu s reťazcami, mnohé z numerických funkcií prijímajú jeden vstup. Je to samozrejme preto, že sa majú používať na dopytovanie, ako v poslednom príklade XPath: //li[podlaha(text()) > 250]/@val

Ak ich použijete, ako väčšina príkladov, skončíte tak, že ho spustíte na prvom uzle, ktorý zodpovedá ceste. Existujú aj niektoré funkcie konverzie typov, ktorým by ste sa mali pravdepodobne vyhnúť, pretože JavaScript už má svoje vlastné problémy s konverziou typov. Môže sa však stať, že budete chcieť previesť reťazec na číslo, aby ste ho porovnali s iným číslom. Funkcie, ktoré nastavujú typ niečoho, sú boolean, číslo, reťazec a uzol. Toto sú dôležité dátové typy XPath. A ako si viete predstaviť, väčšinu týchto funkcií možno použiť na dátových typoch, ktoré nie sú uzlami DOM. Napríklad substring-after berie reťazec, ako sme už spomenuli, ale môže to byť reťazec z atribútu href. Môže to byť aj reťazec:

const testSubstringAfter = document.queryXPaths("substring-after('hello world',' ')");

Je zrejmé, že tento príklad nám vráti pole výsledkov ako ["svet"]. Aby som to ukázal v akcii, vytvoril som ukážkovú stránku využívajúcu funkcie proti veciam, ktoré nie sú uzlami DOM: Pozrite si Pen queryXPath [forked] od Bryana Rasmussena. Mali by ste si všimnúť prekvapivý aspekt funkcie translate, ktorý spočíva v tom, že ak máte znak v druhom argumente (t. j. v zozname znakov, ktoré chcete preložiť) a žiadny zodpovedajúci znak na preklad, tento znak sa z výstupu odstráni. Teda toto:

translate('Ahoj, volám sa Inigo Montoya, zabil si môjho otca, priprav sa na smrť','abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ,','*')

...výsledky v reťazci vrátane medzier: [" * * ** "]

To znamená, že písmeno „a“ sa prekladá na hviezdičku (*), ale každý ďalší znak, ktorý nemá preklad vzhľadom na cieľový reťazec, je úplne odstránený. Biele miesta sú jediné, čo nám zostalomedzi preloženými znakmi „a“. Potom znova tento dotaz:

translate('Ahoj, volám sa Inigo Montoya, zabil si môjho otca, priprav sa na smrť','abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ,','*******************************************************')")

...nemá problém a zobrazí výsledok, ktorý vyzerá takto:

"***** ** **** ** ***** ******* *** ******** ** **** ******** ** ***"

Mohlo by vás napadnúť, že v JavaScripte neexistuje jednoduchý spôsob, ako urobiť presne to, čo robí funkcia XPath translate, hoci v mnohých prípadoch to dokáže nahradiť všetko regulárnymi výrazmi. Môžete použiť rovnaký prístup, aký som ukázal, ale nie je to optimálne, ak chcete iba preložiť reťazce. Nasledujúce demo obsahuje funkciu prekladu XPath a poskytuje verziu JavaScriptu: Pozrite si funkciu prekladu pera [forked] od Bryana Rasmussena. Kde by ste mohli použiť niečo také? Zvážte šifrovanie Caesar Cipher s trojmiestnym posunom (napr. šifrovanie najvyššej úrovne z roku 48 pred Kristom):

translate("Caesar plánuje prekročiť Rubikon!", "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz", "XYZABCDEFGHIJKLMNOPQRSTUVWxyzabcdefghijklmnopqrstuvw")

Vstupný text „Caesar plánuje prekročiť Rubikon!“ výsledkom je „Zxbpxo fp mixkkfkd ql zolpp qeb Oryfzlk!“ Aby som uviedol ďalší rýchly príklad rôznych možností, vytvoril som kovovú funkciu, ktorá berie reťazec a používa funkciu prekladu na vrátenie textu vrátane všetkých znakov, ktoré prijímajú prehlásky. Pozrite si kovovú funkciu pera [forked] od Bryana Rasmussena.

const metal = (str) => { return translate(str, "AOUaou","ÄÖÜäöü"); }

A ak dostanete text „Pravidlá pestré kruté, skala na chlapov!“, vráti sa „Mötley Crüe rüles, röck ön düdes!“ Je zrejmé, že túto funkciu možno použiť na rôzne druhy paródie. Ak ste to vy, tento článok TVTropes by vám mal poskytnúť veľa inšpirácie. Používanie CSS s XPath Pamätajte na náš hlavný dôvod používania CSS selektorov spolu s XPath: CSS do značnej miery chápe, čo je trieda, zatiaľ čo najlepšie, čo môžete s XPath urobiť, je porovnávanie reťazcov atribútu class. To bude fungovať vo väčšine prípadov. Ale ak by ste sa niekedy dostali do situácie, v ktorej, povedzme, niekto vytvoril triedy s názvom .primaryLinks a .primaryLinks2 a vy ste na získanie triedy .primaryLinks používali XPath, pravdepodobne by ste narazili na problémy. Pokiaľ nie je nič také hlúpe, pravdepodobne by ste použili XPath. So zármutkom však musím oznámiť, že som pracoval na miestach, kde ľudia robia takéto hlúposti. Tu je ďalšia ukážka s použitím CSS a XPath spolu. Ukazuje, čo sa stane, keď použijeme kód na spustenie XPath v kontextovom uzle, ktorý nie je uzlom dokumentu. Pozrite si spolu Pen css a xpath [forked] od Bryana Rasmussena. Dotaz CSS je .relatedarticles a, ktorý načíta dva prvky a v prvku div s priradenou triedou .relatedarticles. Potom nasledujú tri „zlé“ dotazy, teda dotazy, ktoré pri spustení s týmito prvkami ako kontextovým uzlom nerobia to, čo chceme, aby robili. Viem vysvetliť, prečo sa správajú inak, ako by ste čakali. Tieto tri zlé otázky sú:

//text(): Vráti celý text v dokumente. //a/text(): Vráti všetok text vnútri odkazov v dokumente. ./a/text(): Nevracia žiadne výsledky.

Dôvodom týchto výsledkov je, že zatiaľ čo váš kontext je prvkami vrátenými z dopytu CSS, // ide proti celému dokumentu. Toto je sila XPath; CSS nemôže prejsť od uzla k predkovi a potom k súrodencovi tohto predka a prejsť nadol k potomkovi tohto súrodenca. Ale XPath môže. Medzitým sa ./ pýta na deti aktuálneho uzla, kde bodka (.) predstavuje aktuálny uzol a lomka (/) predstavuje prechod na nejaký podriadený uzol – či ide o atribút, prvok alebo text, určuje nasledujúca časť cesty. Dotazom CSS však nie je vybratý žiadny podradený prvok, takže tento dotaz tiež nič nevracia. V poslednej ukážke sú tri dobré otázky:

.//text(), ./text(), normalize-space(./text()).

Dotaz na normalizáciu priestoru demonštruje použitie funkcie XPath, ale tiež rieši problém zahrnutý v iných dotazoch. Kód HTML je štruktúrovaný takto:

Automatizujte testovanie funkcií pomocou Selenium WebDriver

Dopyt vráti riadok na začiatku a na konci textového uzla,a normalize-space to odstráni. Použitie akejkoľvek funkcie XPath, ktorá vracia niečo iné ako boolean so vstupom XPath, sa vzťahuje na ostatné funkcie. Nasledujúce demo ukazuje niekoľko príkladov: Pozrite si príklady funkcií Pen xpath [forked] od Bryana Rasmussena. Prvý príklad ukazuje problém, na ktorý by ste si mali dávať pozor. Konkrétne ide o nasledujúci kód:

document.queryXPaths("substring-after(//a/@href,'https://')");

...vracia jeden reťazec:

"www.smashingmagazine.com/2018/04/feature-testing-selenium-webdriver/"

Dáva to zmysel, však? Tieto funkcie nevracajú polia, ale skôr jednotlivé reťazce alebo jednotlivé čísla. Spustenie funkcie kdekoľvek s viacerými výsledkami vráti iba prvý výsledok. Druhý výsledok ukazuje, čo skutočne chceme:

document.queryCSSSelectors("a").queryXPaths("substring-after(./@href,'https://')");

Čo vráti pole dvoch reťazcov:

["www.smashingmagazine.com/2018/04/feature-testing-selenium-webdriver/","www.smashingmagazine.com/2022/11/automated-test-results-improve-accessibility/"]

Funkcie XPath môžu byť vnorené rovnako ako funkcie v JavaScripte. Ak teda poznáme štruktúru adresy URL časopisu Smashing Magazine, mohli by sme urobiť nasledovné (odporúča sa použiť literály šablóny): `preložiť( podreťazec ( substring-after(./@href, ‚www.smashingmagazine.com/') ,9), '/','')".

Začína to byť príliš zložité do tej miery, že si to vyžaduje komentáre popisujúce, čo robí: vezmite celú adresu URL z atribútu href za www.smashingmagazine.com/, odstráňte prvých deväť znakov a potom preložte znak lomky (/) na nič, aby ste sa zbavili koncovej lomky. Výsledné pole:

["feature-testing-selenium-webdriver","automated-test-results-improve-accessibility"]

Viac prípadov použitia XPath XPath môže v testovaní skutočne zažiariť. Dôvod nie je ťažké pochopiť, pretože XPath možno použiť na získanie každého prvku v DOM z akejkoľvek pozície v DOM, zatiaľ čo CSS nie. Nemôžete rátať s tým, že triedy CSS zostanú konzistentné v mnohých moderných systémoch zostavovania, ale s XPath sme schopní urobiť robustnejšie zhody, pokiaľ ide o to, aký je textový obsah prvku, bez ohľadu na meniacu sa štruktúru DOM. Uskutočnil sa výskum techník, ktoré vám umožňujú vykonávať odolné testy XPath. Nie je nič horšie, ako keď sa testy rozpadajú a zlyhajú len preto, že selektor CSS už nefunguje, pretože niečo bolo premenované alebo odstránené. XPath je tiež naozaj skvelý pri extrakcii viacerých lokátorov. Existuje viac ako jeden spôsob použitia dotazov XPath na priradenie prvku. To isté platí pre CSS. Dopyty XPath sa však môžu vŕtať vo veciach cielenejším spôsobom, ktorý obmedzuje to, čo sa vráti, čo vám umožní nájsť konkrétnu zhodu, kde môže byť niekoľko možných zhôd. Napríklad môžeme použiť XPath na vrátenie špecifického prvku h2, ktorý sa nachádza vo vnútri prvku div, ktorý bezprostredne nasleduje po súrodeneckom prvku div, ktorý zase obsahuje podradený prvok obrázka s atribútom data-testID="leader":

Nechápem tento nadpis

Nechápte ani tento nadpis

Hlavička pre obrázok vodcu

Toto je dotaz: document.queryXPaths(` //div[ nasledujúci-súrodenec::div[1] /img[@data-testID='leader'] ] /h2/ text() `);

Pozrime sa na ukážku, aby sme videli, ako sa to všetko spája: Pozrite si otázku Pen Complex H2 [forked] od Bryana Rasmussena. Takže áno. Existuje veľa možných ciest k akémukoľvek prvku v teste pomocou XPath. Podpora XSLT 1.0 Už som spomenul, že tím Chrome plánuje z prehliadača odstrániť podporu XSLT 1.0. To je dôležité, pretože XSLT 1.0 používa na transformáciu dokumentov programovanie zamerané na XML, ktoré sa zasa spolieha na XPath 1.0, ktorý sa nachádza vo väčšine prehliadačov. Keď sa to stane, stratíme kľúčový komponent XPath. Ale vzhľadom na skutočnosť, že XPath je naozaj skvelý na písanie testov, považujem za nepravdepodobné, že XPath ako celok v dohľadnej dobe zmizne. To znamená, že som si všimol, že ľudia sa zaujímajú o funkciu, keď je odobratá. A to určite platí v prípade, že XSLT 1.0 je zastaraný. V Hacker News prebieha celá diskusia plná argumentov proti zrušeniu podpory. Samotný príspevok je skvelým príkladom vytvorenia rámca pre blogovanie pomocou XSLT. vysi môžete prečítať diskusiu sami, ale dostane sa k tomu, ako by sa JavaScript mohol použiť ako podložka pre XLST na zvládnutie takýchto prípadov. Videl som tiež návrhy, že prehliadače by mali používať SaxonJS, čo je port pre JavaScriptové motory Saxon XSLT, XQUERY a XPath. To je zaujímavý nápad, najmä preto, že Saxon-JS implementuje aktuálnu verziu týchto špecifikácií, zatiaľ čo neexistuje žiadny prehliadač, ktorý by implementoval akúkoľvek verziu XPath alebo XSLT nad 1.0, a žiadny, ktorý by implementoval XQuery. Oslovil som Norm Tovey-Walsh zo spoločnosti Saxonica, spoločnosť, ktorá stojí za SaxonJS a ďalšími verziami motora Saxon. Povedal: „Ak by nejaký predajca prehliadača mal záujem vziať SaxonJS ako východiskový bod pre integráciu moderných XML technológií do prehliadača, radi by sme s ním o tom diskutovali.“ – Norm Tovey-Walsh

Ale tiež dodal: "Bol by som veľmi prekvapený, keby si niekto myslel, že prevzatie SaxonJS v jeho súčasnej podobe a jeho vloženie do zostavy prehliadača v nezmenenej podobe by bol ideálny prístup. Predajca prehliadača, vzhľadom na to, že zostavuje prehliadač, by mohol pristupovať k integrácii na oveľa hlbšej úrovni, než ako môžeme my "zvonku"." - Norm Tovey-Walsh

Stojí za zmienku, že komentáre Tovey-Walsha prišli asi týždeň pred oznámením o ukončení podpory XSLT. Záver Mohol by som pokračovať ďalej a ďalej. Dúfam však, že to demonštrovalo silu XPath a poskytlo vám veľa príkladov, ako ho použiť na dosiahnutie veľkých vecí. Je to dokonalý príklad staršej technológie v prehliadači, ktorá má aj dnes veľa užitočných funkcií, aj keď ste nikdy nevedeli, že existuje, alebo ste nikdy neuvažovali o tom, že by ste po nej siahla. Ďalšie čítanie

„Zlepšenie odolnosti automatizovaných webových testov s prirodzeným jazykom“ (Digitálna knižnica ACM) od Marouna Ayliho, Youssef Bakouny, Nader Jalloul a Rima KilanyTento článok poskytuje mnoho príkladov XPath na písanie odolných testov. XPath (MDN) Toto je skvelé miesto, kde začať, ak chcete technické vysvetlenie podrobne o tom, ako XPath funguje. Výukový program XPath (ZVON) Zistil som, že tento návod je najužitočnejší pri mojom vlastnom učení vďaka množstvu príkladov a jasných vysvetlení. XPatherTento interaktívny nástroj vám umožňuje pracovať priamo s kódom.

You May Also Like

Enjoyed This Article?

Get weekly tips on growing your audience and monetizing your content — straight to your inbox.

No spam. Join 138,000+ creators. Unsubscribe anytime.

Create Your Free Bio Page

Join 138,000+ creators on Seemless.

Get Started Free