Мин еллар дәвамында тенденцияне күрер өчен бик озак эшләдем: яшь программистлар яңа программалаштыру парадигмасы белән эшлиләр, аның тарихи контекстын аңламыйча. Әлбәттә, нәрсәдер белмәү бик яхшы аңлашыла. Веб - төрле осталык һәм белгечлекләр тупланган бик зур урын, һәм без белмәгәнне без һәрвакыт белмибез. Бу өлкәдә өйрәнү - бер тапкыр булган һәм беткән нәрсә түгел, ә дәвамлы сәяхәт. Эш очрагы: Минем командадагы кемдер кулланучыларның UI-ның билгеле бер кыстыргычыннан читкә китүләрен әйтеп буламы-юкмы дип сорады. Мин JavaScript-ның йөкләү вакыйгасын күрсәттем. Ләкин моңа кадәр моны эшләгәннәр моны белергә мөмкин, чөнки алар бүтән сайтларда сакланмаган мәгълүматлар турында хәбәрләр белән сугарылган, моның өчен йөкләү гадәти куллану очраклары. Мин шулай ук ​​битне яшерү һәм күренүчәнлекне үзгәрттем. Мин моны ничек белдем? Чөнки ул башка проектта барлыкка килгән, мин башта JavaScript өйрәнгәндә өйрәнгәнгә түгел. Факт - заманча фронтовик рамкалар алардан алда булган технология гигантлары җилкәсендә торалар. Алар абстракт үсеш практикалары, еш кына яхшырак эшкәртүче тәҗрибәсе өчен, гадәттәгечә фронтовик төшенчәләрне белү яки кагу кирәклеген киметә, яки бетерә, һәркем белергә тиеш. CSS объект моделен карагыз (CSSOM). Сез CSS һәм JavaScript'та эшләүчеләрнең CSSOM тәҗрибәсе бар дип көтә аласыз, ләкин бу һәрвакытта да алай булмас. Электрон сәүдә сайты өчен React проекты бар иде, мин хәзерге вакытта сайланган түләү провайдеры өчен стиль таблицасын йөкләргә кирәк булган җирдә эшләдем. Проблема шунда ки, стиль таблицасы һәр биттә йөкләнә иде, ул чыннан да билгеле бер биттә кирәк булганда. Моны ясау өчен эшләнгән ясаучы беркайчан да стиль таблицасын йөкләмәгән. Тагын, бу бөтенләй аңлашыла, реакция сез ирешкән традицион карашны читкә алып китә. CSSOM сезнең көндәлек эшегездә кирәк түгелдер. Ләкин, мөгаен, сезгә аның белән үзара бәйләнештә булырга кирәк булыр, хәтта бер тапкыр. Бу тәҗрибәләр мине бу мәкаләне язарга дәртләндерде. Кыргыйда бик күп веб-функцияләр һәм технологияләр бар, алар сезнең көндәлек эшегездә беркайчан да кагылмаска мөмкин. Бәлки, сез веб үсеше өчен бөтенләй яңа, һәм алар турында сез белмисез, чөнки сез билгеле бер база абстракциясенә кереп китәсез, бу сезне тирәнтен белүне таләп итми, хәтта бөтенләй. Мин XML турында махсус әйтәм, безнең күбебез HTMLдан бөтенләй охшамаган борынгы тел икәнен белә. Соңгы WHATWG дискуссияләре аркасында мин моны китерәм, XSLT программалаштыру дип аталган XML стекның зур өлеше браузерлардан чыгарылырга тиеш. Бу нәкъ безнең иске, булган технология, безнең команда булган CSSOM ситуациясе кебек практик нәрсә өчен кулланыла ала. Сез моңа кадәр XSLT белән эшләдегезме? Әйдә карыйк, без бу иске технологиягә бик нык таянабыз һәм аның үзенчәлекләрен XML контекстыннан тыш реаль дөнья проблемаларын чишү өчен кулланабыз. XPath: Centralзәк 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'ның document.evaluate методы һәм без JavaScript өчен CSS API'лары белән кулланган төрле сорау селектор ысуллары туры килми. Безне башлар өчен, мин туры килгән сорау API ясадым, танылса да, мин монда күп эшләмәдем, чөнки ул монда эшләгән эшебездән ерак. Менә кабат кулланыла торган сорау конструкторының гади эш мисалы: Брайан Расмуссенның каләм соравын карагыз. Мин документ объектына ике ысул өстәдем: queryCSSSelectors (бу сорауSelectorAll соравы) һәм XPaths соравы. Бу икесе дә сорау нәтиҗәләре объектын кайтаралар:

{ сорау төре: төеннәр | кыл | саны | буле, нәтиҗәләр: теләсә нинди [] // html элементлары, xml элементлары, кыллар, саннар, буле, сорауCSSСелекторлар: (сорау: тезмә, төзәтмә: булеан) => сорау Нәтиҗә, queryXpaths: (сорау: тезмә, төзәтмә: булеан) => сорау нәтиҗәләре }

СорауCSSSelectors һәм queryXpaths функцияләре сез биргән сорауны нәтиҗәләр массивындагы элементлар өстендә эшли, нәтиҗәләр массивы тип төеннәре булганда. Otherwiseгыйсә, буш массив һәм төен төре белән Результат соравын кайтарыр. Әгәр дә үзгәртү милеге дөрес итеп куелса, функцияләр үзләренең соравын үзгәртәчәк. Моны җитештерү шартларында кулланырга ярамый. Ике сорау API-ны бергә куллануның төрле эффектларын күрсәтү өчен мин моны шулай эшлим. Мисал сораулары Төрле XPath соравының берничә мисалын күрсәтәсем килә, алар эшли алырлык көчле әйберләрне күрсәтәләр, һәм алар башка карашлар урынына ничек кулланыла ала. Беренче мисал // li / text (). Бу барлык li элементларын сорый һәм аларның текст төеннәрен кайтара. Шулай итеп, без түбәндәге HTML сорасак:

  • бер
  • ике
  • өч

... бу кире кайтарыла:

{"queryType": "xpathEvaluate", "нәтиҗәләр": ["бер", "ике", "өч"], "нәтиҗә төре": "тезмә"}

Башка сүзләр белән әйткәндә, без түбәндәге массивны алабыз: ["бер", "ике", "өч"]. Гадәттә, сез li элементларын алырсыз, бу сорау нәтиҗәләрен массивка әйләндерерсез, массивны картага китерерсез һәм һәр элементның текст төенен кире кайтарырсыз. Ләкин без моны XPath белән төгәлрәк эшли алабыз: document.queryXPaths ("// li / text ()"). нәтиҗәләр.

Игътибар итегез, текст төенен алу ысулы - функция имзасына охшаган текстны () куллану - һәм ул шулай. Бу элементның текст төенен кире кайтара. Безнең мисалда, билгеләрдә өч ли элементы бар, аларның һәрберсендә текст бар ("бер", "ике", "өч"). Текст () соравының тагын бер мисалын карыйк. Бу безнең билгебез дип уйлагыз: Керегез

Href атрибутик кыйммәтен кайтаручы сорау языйк: document.queryXPaths ("// a [text () = 'Керү'] / @ href"). нәтиҗәләр.

Бу хәзерге документтагы XPath соравы, соңгы мисал кебек, ләкин бу юлы без "Керү" текстын үз эченә алган сылтаманың (элемент) href атрибутын кире кайтарабыз. Чын кайттынәтиҗә ["/login.html"]. XPath функцияләренә күзәтү XPath функцияләре бар, һәм сез алар белән таныш түгелсездер. Минемчә, белергә кирәк булган берничә, шул исәптән түбәндәгеләрне дә кертеп:

Әгәр дә текст башка текст мисалыннан башланса, башлана (@href, 'http:') href атрибуты http :. белән башланса, кире кайта. Әгәр дә текстта бүтән текст мисалы булса, анда (текст (), "Сүндерү журналы") текст төенендә "Чүпрәле журнал" сүзләре булса, дөрес кайта. count Сорауга ничә матч барлыгын саный. Мәсәлән, санагыз (// * [старт-белән (@href, 'http:'])) контекст төенендәге ничә сылтаманың href атрибутикасы булган элементлары барлыгын саный: http :. substringWaws JavaScript субстринг кебек, аргумент буларак сызыкны узудан кала. Мәсәлән, субстринг ("минем текст", 2, 4) "y t" кайтара. substring-beforeРезнең өлешен бүтән юл алдыннан кире кайтара. Мисал өчен, алдан алыштыру ("минем текст", "") "минем" кайтара. Шулай ук, субстринг-алдан ("сәлам", "саубуллашу") буш сызыкны кайтара. substring-afterРезнең өлешен бүтән сызыктан соң кайтара. Мәсәлән, субстингтан соң ("минем текст", "") "текст" кайтара. Шулай ук, субстринг-соң ("сәлам", "саубуллашу") буш сызыкны кайтара. нормальләштерү-космос Аргумент сызыгын ак киңлек белән нормальләштерә, әйдәп баручы һәм эзләнгән киңлекне кисеп һәм киңлек символлары эзлеклелеген бер киңлеккә алыштыра. not Әгәр дә аргумент ялган булса, дөрес булмаса, буле дөрес. trueReturns буле дөрес. falseReturns буле ялган. concat JavaScript конкаты белән бер үк нәрсә, сез аны тезмә ысул буларак эшләмисез. Киресенчә, сез берләштерергә теләгән барлык юлларны куясыз. string-lengthБу JavaScript сызыгы озынлыгы белән бертигез түгел, киресенчә, аргумент буларак бирелгән юлның озынлыгын кире кайтара. translateБу тезмәне ала һәм икенче аргументны өченче аргументка үзгәртә. Мәсәлән, XYZdef нәтиҗәләрен тәрҗемә итегез ("abcdef", "abc", "XYZ").

Бу махсус XPath функцияләреннән кала, аларның JavaScript коллегалары кебек үк эшли торган башка функцияләр бар - яки теләсә нинди программалаштыру телендәге хезмәттәшләр - сез шулай ук файдалы булыр идегез, мәсәлән, идән, түшәм, түгәрәк, сумма һ.б. Түбәндәге демо бу функцияләрнең һәрберсен күрсәтә: Каләм XPath Сан функцияләрен карагыз Брайан Расмуссен. Игътибар итегез, күпчелек манипуляция функцияләре кебек, саннарның күбесе бер кертүне ала. Бу, әлбәттә, чөнки алар соңгы XPath мисалындагы кебек сорау өчен кулланылырга тиеш: // li [идән (текст ())> 250] / @ val

Әгәр дә сез аларны куллансагыз, күпчелек мисаллар кебек, сез аны юлга туры килгән беренче төендә эшләячәксез. Кайбер төр конверсия функцияләре дә бар, мөгаен, алардан сакланырга кирәк, чөнки JavaScriptның үз төрен үзгәртү проблемалары бар. Ләкин кайбер саннарны санга әйләндерергә теләгән вакытлар булырга мөмкин. Берәр нәрсәнең төрен билгеләгән функцияләр буле, сан, сызык һәм төен. Бу мөһим XPath мәгълүматлар. Сез күз алдыгызга китерә аласыз, бу функцияләрнең күбесе DOM төеннәре булмаган мәгълүмат төрләрендә кулланылырга мөмкин. Мисал өчен, субстринг-сызык без инде каплаганча сызык ала, ләкин бу href атрибутыннан сызык булырга мөмкин. Бу шулай ук тезмә булырга мөмкин:

const testSubstringAfter = document.queryXPaths ("субстринг-соң ('сәлам дөньясы', '')");

Билгеле, бу мисал безгә ["дөнья"] нәтиҗәләр массивын кире кайтарачак. Моны эштә күрсәтү өчен, мин DOM төеннәре булмаган әйберләргә каршы функцияләр кулланып демо бит ясадым: Брайан Расмуссенның каләм соравын карагыз. Сез тәрҗемә функциясенең гаҗәп ягына игътибар итергә тиеш, чөнки сездә икенче аргументта персонаж булса (ягъни, сез тәрҗемә итәргә теләгән персонажлар исемлеге) һәм тәрҗемә итәрлек символ булмаса, бу символ чыгыштан чыгарыла. Шулай итеп, бу:

тәрҗемә ит.

... тезмә нәтиҗәләр, шул исәптән бушлыклар: ["* * **"]

Димәк, “а” хәрефе йолдызга (*) тәрҗемә ителә, ләкин максатчан сызыкны исәпкә алып тәрҗемә ителмәгән башка персонажлар тулысынча бетерелә. Ак мәйдан - без бары тик калдырдыктәрҗемә ителгән “а” символлары арасында. Аннары тагын, бу сорау:

тәрҗемә ит.

... проблема юк һәм шундый ук нәтиҗә ясый:

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

Сезгә сокланырга мөмкин, JavaScript'та XPath тәрҗемә итү функциясен төгәл башкару өчен җиңел юл юк, күп очракта, барысын да регуляр сүзләр белән алыштырыгыз. Сез күрсәткән бер үк ысулны куллана аласыз, ләкин бу субоптималь, әгәр сез теләгәннәрнең барысын да тәрҗемә итү булса. JavaScript версиясен тәэмин итү өчен түбәндәге демо XPath тәрҗемә функциясен урап ала: Брайан Расмуссенның каләм тәрҗемә итү функциясен карагыз. Мондый әйберне кайда кулланырга мөмкин? Өч урынлы офсет белән esезарь шифрын шифрлауны карагыз (мәсәлән, б. Э. 48 елыннан иң югары шифрлау):

тәрҗемә итү ("esезарь Рубикон аша үтәргә уйлый!", "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz", "XYZABCDEFGHIJKLMNOPQRSTUVWxyzabcdefghijklmnopqrstuvw")

"Esезар Рубикон аша үтәргә уйлый!" Керү тексты. "Zxbpxo fp mixkkfkd ql zolpp qeb Oryfzlk!" нәтиҗәләре. Төрле мөмкинлекләрнең тагын бер тиз мисалын китерер өчен, мин металл функция ясадым, ул тезмә кертүне ала һәм текстны кайтару өчен тәрҗемә функциясен куллана, шул исәптән барлык символларны. Брайан Расмуссенның каләм металл функциясен карагыз.

const metal = (str) => { кире тәрҗемә (стр., "AOUaou", "ÄÖÜäöü"); }

Әгәр дә "Motley Crue кагыйдәләре, дудларга таш!" Тексты бирелсә, "Mötley Crüe rüles, röck ön düdes!" Билгеле, бу функциянең төрле пародия кулланулары булырга мөмкин. Әгәр дә ул сез икән, димәк, бу TVTropes мәкаләсе сезгә бик күп илһам бирергә тиеш. XPath белән CSS куллану CSP селекторларын XPath белән бергә куллануның төп сәбәбен исегездә тотыгыз: CSS классның нәрсә икәнен бик яхшы аңлый, ә XPath белән иң яхшысы - класс атрибутын чагыштыру. Бу күпчелек очракта эшләячәк. Әгәр дә сез берәрсе .primaryLinks һәм .primaryLinks2 исемле класслар ясаган ситуациягә эләксәгез һәм сез .primaryLinks классын алу өчен XPath кулланган булсагыз, сез проблемаларга дучар булырсыз. Мондый акылсыз нәрсә булмаса, сез XPath кулланырсыз. Ләкин мин кешеләрнең бу төр акылсыз эшләрне эшләгән урыннарында эшләвем турында бик кызганыч. Менә CSS һәм XPathны бергә кулланган тагын бер демо. Бу документ төен булмаган контекст төенендә XPath эшләгәндә кодны кулланганда нәрсә булачагын күрсәтә. Брайан Расмуссен язган каләм css һәм xpathны бергә карагыз. CSS соравы .relatedarticles a, ул ике элементны .relatedarticles классына бүленгән бүлектә ала. Аннан соң өч "начар" сорау, ягъни контекст төене буларак бу элементлар белән эшләгәндә без теләгәнне эшләмәгән сорау. Аларның ни өчен сез көткәннән башкача эш итүләрен аңлатып бирә алам. Өч начар сорау:

// текст (): документтагы барлык текстны кайтара. // a / text (): документтагы сылтамалар эчендәге барлык текстны кайтара. ./a/text (): нәтиҗәләр юк.

Бу нәтиҗәләрнең сәбәбе - сезнең контекст CSS соравыннан кайтарылган элементлар булса да, // бөтен документка каршы. Бу XPath көче; CSS төеннән ата-бабага, аннары шул бабаның бертуганына бара алмый, һәм шул кардәш токымына таба бара алмый. Ләкин XPath булдыра ала. Шул ук. Ләкин CSS соравы белән сайланган элемент юк, шуңа күрә сорау да бернәрсәгә дә кире кайтмый. Соңгы демода өч яхшы сорау бар:

.// текст (), ./text (), нормальләштерү-урын (./ текст ()).

Нормалаштыру-космик сорау XPath функциясен куллануны күрсәтә, шулай ук бүтән сорауларга кертелгән проблеманы төзәтә. HTML шулай структураланган:

Селен WebDriver ярдәмендә сезнең функцияне сынауны автоматлаштыру

Сорау текст төененең башында һәм ахырында линия тасмасын кайтара,һәм нормальләштерү урыны моны бетерә. XPath кертү белән буледан башка әйберне кайтаручы теләсә нинди XPath функциясен куллану бүтән функцияләргә кагыла. Түбәндәге демо берничә мисал күрсәтә: Брайан Расмуссенның каләм xpath функцияләрен карагыз. Беренче мисалда сез сак булырга тиеш проблеманы күрсәтә. Аерым алганда, түбәндәге код:

document.queryXPaths ("субстринг-соң (// a / @ href, 'https: //')");

... бер юлны кайтара:

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

Моның мәгънәсе бар, шулай бит? Бу функцияләр массивларны кире кайтармыйлар, киресенчә, бер сызык яки бер сан. Функцияне берничә нәтиҗәләр белән теләсә кайда эшләтеп җибәрү беренче нәтиҗәләрне генә кайтара. Икенче нәтиҗә безнең нәрсә теләгәнебезне күрсәтә:

document.queryCSSSelectors ("a") .queryXPaths ("субстринг-соң (./@href,'https:// ')");

Ике сызык массивын кайтара:

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

XPath функцияләре JavaScript функцияләре кебек ояланырга мөмкин. Шулай итеп, без "Smashing Magazine" URL структурасын белсәк, без түбәндәгеләрне эшли алыр идек (шаблон литералларын куллану тәкъдим ителә): `тәрҗемә итү субстринг ( субстринг-соң (./@ 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 куллана алабыз, див эчендә булган, h2 элементын кире кайтару өчен, шунда ук бертуган дивасына иярә, ул үз чиратында мәгълүмат-testID = "лидер" атрибутикасы булган балалар образы элементын үз эченә ала:

бу башламны алма

Бу исемне дә алмагыз

лидер образының башы

Бу сорау: document.queryXPaths (` // div [ ияртүче абый :: div [1] / img [@ data-testID = 'лидер'] ] / h2 / текст () `);

Барысы бергә җыелганын күрер өчен демога төшик: Брайан Расмуссен язган 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 өчен андый очракларны эшкәртү өчен балкып кулланылырга мөмкин. Мин шулай ук ​​браузерларда SaxonJS кулланырга тиеш дигән тәкъдимнәрне күрдем, бу JavaScript'ның Саксон XSLT, XQUERY һәм XPath двигательләренә порт. Бу кызык идея, бигрәк тә Саксон-JS бу спецификацияләрнең хәзерге версиясен тормышка ашыра, чөнки XPath яки XSLTның 1.0 версиясен кертә торган браузер юк, һәм XQueryны тормышка ашыручы юк. Мин Саксоникадагы Норм Тови-Уолшка, SaxonJS артындагы компаниягә һәм Саксон двигателенең башка версияләренә мөрәҗәгать иттем. Ул әйтте: "Әгәр дә теләсә нинди браузер сатучысы SaxonJSны заманча XML технологияләрен браузерга интеграцияләү өчен башлангыч нокта итеп алырга теләсә, без алар белән сөйләшү өчен бик шат булырбыз." - Норм Тови-Уолш

Ләкин шулай ук өстәлде: "Әгәр дә берәрсе SaxonJS-ны хәзерге формасында алып, аны үзгәртмичә браузерга ташлау идеаль алым булыр дип уйлаган булса, мин бик гаҗәпләнер идем. Браузер сатучысы, браузерны төзегәнгә, интеграциягә без" тышкы яктан "караганда тирәнрәк дәрәҗәдә якынлаша алыр иде." - Норм Тови-Уолш.

Әйтергә кирәк, Тови-Уолш аңлатмалары XSLT искерү игъланына бер атна кала килде. Йомгаклау Мин дәвам итә алыр идем. Ләкин бу XPath көчен күрсәтте һәм зур әйберләргә ирешү өчен аны ничек кулланырга икәнен күрсәтүче күп мисаллар китерде дип ышанам. Бу браузер стаканындагы иске технологиянең иң яхшы мисалы, бүгенге көндә дә бик күп файдалы, сез аның булганын беркайчан да белмәсәгез дә, аңа ирешергә уйламаган булсагыз да. Киләсе уку

"Табигать теле белән автоматлаштырылган веб-тестларның ныклыгын арттыру" (ACM Digital Library) Марун Айли, Йосыф Бакуни, Надер Джаллул һәм Рима Килани Бу мәкалә ныклы тестлар язу өчен күп XPath мисалларын китерә. XPath (MDN) XPath-ның ничек эшләвен җентекләп аңлатсагыз, башлау өчен менә дигән урын. XPath Tutorial (ZVON) Мин бу дәресне үз өйрәнүемдә иң файдалы дип таптым, күп мисаллар һәм ачык аңлатмалар ярдәмендә. XPather Бу интерактив корал сезгә турыдан-туры код белән эшләргә мөмкинлек бирә.

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