Як усталяваць значэнне зменнай у АДС патрабуе шлях-выкліку

Я спрабую выкарыстоўваць карыстацкую функцыю ў XSLT, які неаднаразова называе значэнне пэўнай радка. Гэты радок заснавана на выніках выразы XPath, што не будзе змяняцца ў межах прамежку аднаго выкліку функцыі. Я думаў, што гэта было б добрай ідэяй, каб прысвоіць яго зменнай, а не глядзець яго зноў і зноў.

На жаль, па меншай меры, у рэалізацыі саксонскага, вы не можаце выкарыстоўваць выраз XPath, якое патрабуе вузел ўнутры функцыі, нават адзін на аснове абсалютнага шляху, без першага выкарыстання аднаразовай лініі, каб функцыі ведаеце, што вы абмяркоўваеце каранёвай дакумент, а не іншы адзін.

Так, напрыклад, наступны код выдае памылку:




Як правіла, рашэнне толькі першы выклік любога глабальную зменную, каб даць кантэкст. Напрыклад, наступныя работы ўнутры ад UDF ($ кораня з'яўляецца зменнай ідэнтыфікуюцца з каранёвым вузлом):




Але гэта не працуе, пры спробе выкарыстоўваць Xpath, каб зафіксаваць значэнне зменнай, таму што я не дазволіў паставіць выраз у для-кожнага.

Я таксама паспрабаваў з дапамогай


to give it context, going on what I saw here:http://www.stylusstudio.com/xsllist/200504/post00240.html

Гэта не спрацавала.

FWIW, перадаючы зменную ў функцыю з'яўляецца праблематычным, паколькі выраз Xpath выкарыстоўваецца для вызначэння «myleaf» залежыць ад вузла кантэксту, і я не ведаю, як атрымаць Xpath, каб выклікаць адзін шлях на аснове значэнняў у бягучым вузле кантэксту.

Напрыклад, у кодзе выкліку гэтай функцыі ў мяне ёсць нешта накшталт:




Я працуе ў кантэксце/бульбы/ствала [вачэй] вузла і з дапамогай АДС шукаць/бульбы/ствалавых [SCC] вузел, які мае такое ж значэнне @sessionID. Я не ведаю, як спасылацца на значэнне @sessionID з бягучага вузла кантэксту ў прэдыкаты ў XPath пошуку іншых вузлоў ў зусім іншай частцы дрэва XML, так што я выкарыстаў UDF, каб зрабіць гэта. Ён працаваў добра, пакуль я не вырашыў паспрабаваць выкарыстаць зменную для радка замест таго, каб працэсар глядзець яго кожны раз.

Я спрабаваў не ісці на адзін узровень глыбей (з маёй функцыяй сам выклікаць найменны шаблон або пакласці найменны шаблон ўнутры мойму арыгінал для-усё і маючы, што названы шаблон выклік функцыі).

Так што мае пытанні:

A. Для пэўнай карыстальнікам функцыі, як я ўсталяваць зменную, якая залежыць ад выразы XPath?

B. Ці ёсць эфектны спосаб Xpath выкарыстаць значэнне, якую ён выняў з бягучага вузла кантэнту ў прэдыкаты выразы Xpath вы спрабуеце праверыць?

0
Я адправіў прыклад з адпаведным xml на іншае пытанне факусіроўка толькі на пытанне аб тым, як выкарыстоўваць атрыбуты, звязаныя з бягучым вузлом (скажам у наяўнасці для кожнага пункта) у выразе XPath пошуку з іншай. Гэтае пытанне тут спасылка </а >
дададзена аўтар David R, крыніца
@_David R: На жаль, гэта цяжка зразумець пытанне. Не маглі б вы, калі ласка, зменіце пытанне і даць поўны (але кароткі) прыклад, так што яна можа быць прайграная? Таксама, калі ласка, скажыце нам, што менавіта вы хочаце дасягнуць. Таксама, калі ласка, пакажыце адпаведны (як мага карацей) поўны зыходны дакумент XML. У прыватнасці, тое, што сэнс «спрабуе выкарыстаць Xpath, каб зафіксаваць значэнне зменнай»?
дададзена аўтар Dimitre Novatchev, крыніца
@_David R: Дзякуй, я адказаў на новае пытанне.
дададзена аўтар Dimitre Novatchev, крыніца

1 адказы

<�Р> Такім чынам, мае пытанні:      <�Р> а. Для пэўнай карыстальнікам функцыі, як я ўсталяваць зменную, якая залежыць   на выраз XPath?      <�Р> В. Ці ёсць эфектны спосаб Xpath выкарыстаць значэнне, узятае з тока   Змест вузла ў прэдыкаты выразы Xpath вы спрабуеце   для тэставання?

Абодва пытання дастаткова ясны.

A: Я мяркую, што вы на самай справе мелі на ўвазе:

<�Р> "Унутры XSL: функцыі Як вызначыць зменную, якая залежыць ад   кантэкстны вузел? "

The answer: You can't. By definition there is no context node within an xsl:function. This is defined by the W3C XSLT 2.0 specification in the following way:

<�Р> " У целе функцыі табліцы стыляў, фокус першапачаткова   не вызначана; гэта азначае, што любая спроба спаслацца на пункт кантэкстнага,   Кантэкст пазіцыя, або памер кантэксту з'яўляецца неадольны дынамічнай памылкай.   [XPDY0002] "

Вы можаце, аднак, перадаць у якасці параметру, прызначаны кантэкстны вузел (або проста вузел дакумента, які павінен быць выкарыстаны ў якасці току). Ці, у якасці альтэрнатывы, вы можаце звярнуцца да глабальна пэўнай зменнай.

B: Гэтае пытанне цалкам не зразумела:

  1. Што такое "прыцягальны"?

  2. Што такое "бягучае змесціва вузла"? Калі ласка, прывядзіце прыклад канкрэтнай задачы, што ажыццяўляецца ў хацелі «шыкоўны» спосаб.

0
дададзена
Дзякуй за адказ на першае пытанне. Што тычыцца выклаўшы сваю просьбу на другі, падрабязнасці тут: На гэтае пытанне тут спасылка
дададзена аўтар David R, крыніца