|
Как по имеющейся цифре, перейти на уровень иерархии, соответствующий этой цифре ?
|
|||
---|---|---|---|
#18+
Если спецы поняли вопрос - хорошо) Если нет, поясню: Есть цифра 3. - я ее имею в переменной, например - $num Как мне перейти на все узлы третьего уровня в документе..? то бишь <a> <b> <c>ddd</c> </b> </a> к узлу "с" в данном случае.. пс. я еще пробовал складывать строки.. /* - сложить 3 раза ($num раз), чтобы получилось /*/*/* - но не умеет он строку преобразовывать в узел!!.... чтобы его использовать в селекте или в матч.. Помогите, если кто знает как это решается... и еесть ли функция, которая строку преобразует в адрес узла... ну типа name(../..) - выдаст имя родока на 2 уровня выше.. а если $str = "../.." - то name($str) - нифига не выдаст, само собой... вот.. собсно.. такой сабж.. Спаисибо ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2011, 21:50 |
|
Как по имеющейся цифре, перейти на уровень иерархии, соответствующий этой цифре ?
|
|||
---|---|---|---|
#18+
PS. Я конечно могу сделать по тупому IF 'ами... типа если $num=1, то select "/*", если 2 - То select "/*/*" и пр... но блин.. а если уровней 100... не писать же на каждый уровень такое условие..... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2011, 22:26 |
|
Как по имеющейся цифре, перейти на уровень иерархии, соответствующий этой цифре ?
|
|||
---|---|---|---|
#18+
dmitryck, Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2011, 22:27 |
|
Как по имеющейся цифре, перейти на уровень иерархии, соответствующий этой цифре ?
|
|||
---|---|---|---|
#18+
или даже красивее: Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2011, 22:30 |
|
Как по имеющейся цифре, перейти на уровень иерархии, соответствующий этой цифре ?
|
|||
---|---|---|---|
#18+
mage.lan, блин-с... а я пытался юзать этот ancestor!.. только не мог понять какое ему дать имя... звездочка....! тока не понятно... нужно ведь указать текущее имя.. он же считает от узла с определенным именем.. не могу разобрать, конструкция в скобках в качестве дополнительного аргумента выведет количество всех предков от какого узла?? по идее же должно быть типа //*[count(ancestor::ТЕКУЩИЙ_УЗЕЛ)=($num - 1)] типа //*[count(ancestor::node())=($num - 1)] ща.. гляну.. спасибо большое!!!.. забыл что-то про параметры узла и звездочку..) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2011, 22:34 |
|
Как по имеющейся цифре, перейти на уровень иерархии, соответствующий этой цифре ?
|
|||
---|---|---|---|
#18+
mage.lan, а вижу!!.. селф..... ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2011, 22:35 |
|
Как по имеющейся цифре, перейти на уровень иерархии, соответствующий этой цифре ?
|
|||
---|---|---|---|
#18+
mage.lan, Спасибо.. ! ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2011, 22:37 |
|
Как по имеющейся цифре, перейти на уровень иерархии, соответствующий этой цифре ?
|
|||
---|---|---|---|
#18+
dmitryck, да не за что, изучайте :) //* - все узлы документа ancestor-or-self:* - все предки от узла и сам т.е. обходим каждый узел и смотрим сколько у него пап. запрос безумно дорогой, на XML в мег я бы его уже писать не решился... если побаловаться - то можно. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2011, 00:17 |
|
Как по имеющейся цифре, перейти на уровень иерархии, соответствующий этой цифре ?
|
|||
---|---|---|---|
#18+
Еще вариант Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2011, 01:19 |
|
Как по имеющейся цифре, перейти на уровень иерархии, соответствующий этой цифре ?
|
|||
---|---|---|---|
#18+
_Vasilisk_, ага.. эт типа нормального цикла... спасибо..) циклы уже а-ля классические нарыл.. ) ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2011, 01:52 |
|
Как по имеющейся цифре, перейти на уровень иерархии, соответствующий этой цифре ?
|
|||
---|---|---|---|
#18+
_Vasilisk_, рекурсия точне.. с условием.. ну на них циклы и делают.... ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2011, 01:57 |
|
Как по имеющейся цифре, перейти на уровень иерархии, соответствующий этой цифре ?
|
|||
---|---|---|---|
#18+
mage.lan, да... но у меня файлик всего в пару десятков строк... ) так что прокатит.. кстати, а получается, я тут уже обыскался.. что нет такой функции в xpath.. или в самом xsl.. которая бы строку преобразовывала в ключевое слово некое.. ну типа $s="/*" и чтобы при select="преобр_в_узел_xpath($s)" работало бы как select="/*" это вообще решило бы много вопросов.. подобных.. то-есть когда ты можешь как в обычных яз. прогр. сложить че хошь и подставить куда хошь и пр. да и вообще свободы бы появилось больше.. полезная была бы функция типа такого.. пс. хотя если так продолжать думать, то уже не совсем концепция xslt.. тогда можно и вовсе все ключевые слова тоже преобразовывать их строк... типа - $s1='ances', $s2='tor::*, а потом юзать эту $s1+$s2 .. но для концепции шаблонов - это канечн бардак... )) но бывает вот.. такой свободы программистской и не хватает.. и хотя бы одну функцию преобразования строки в узел - могли бы предусмотреть............. имх ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2011, 02:12 |
|
Как по имеющейся цифре, перейти на уровень иерархии, соответствующий этой цифре ?
|
|||
---|---|---|---|
#18+
dmitryck, хаки, безусловно есть, каждый из трансформеров предоставляет свои. Можно вообще использовать императивные языки, типа c# в шаблонах, только на практике это все не нужно. XSL + XPath обладают всеми средствами, чтобы расковырять XML DOM вдоль и поперек. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.11.2011, 16:06 |
|
|
start [/forum/topic.php?fid=14&msg=37550302&tid=1332817]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
141ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 241ms |
0 / 0 |