Глупый, немного, вопрос <xsl:value-of select=<path>

Sergey___K
Уже с Приветом
Posts: 13014
Joined: 10 Jul 2001 09:01
Location: VA

Глупый, немного, вопрос <xsl:value-of select=<path> />

Post by Sergey___K »

Можно ли <path> строить динамически?
Ну, в зависимости от значения элемента в текущем контексте.
(Альтернативы, вроде with-param не нужны)
User avatar
hooch
Уже с Приветом
Posts: 1169
Joined: 16 Jan 2003 23:23

Re: Глупый, немного, вопрос <xsl:value-of select=<path> />

Post by hooch »

Sergey___K wrote:Можно ли <path> строить динамически?
Ну, в зависимости от значения элемента в текущем контексте.
(Альтернативы, вроде with-param не нужны)


Попробуйте создать xsl:variable с нужным path и подставить в ваш xsl:value-of, хотя не уверен, может XSLT и не сьест. :pain1:
Palych
Уже с Приветом
Posts: 13722
Joined: 16 Jan 2001 10:01

Post by Palych »

IMHO, при всей очевидности, необходимость этого приема весьма сомнительна...
Мне ни разу не понадобился.
К тому же многократно увеличивается пространство для багов...
Sergey___K
Уже с Приветом
Posts: 13014
Joined: 10 Jul 2001 09:01
Location: VA

Post by Sergey___K »

IMHO, при всей очевидности, необходимость этого приема весьма сомнительна...
Вопрос был чисто технический. Не про необходимость.
Palych
Уже с Приветом
Posts: 13722
Joined: 16 Jan 2001 10:01

Post by Palych »

Code: Select all

<xsl::value-of select="{$somevar}"/>

ne pokakit?
Palych
Уже с Приветом
Posts: 13722
Joined: 16 Jan 2001 10:01

Post by Palych »

Sergey___K
Уже с Приветом
Posts: 13014
Joined: 10 Jul 2001 09:01
Location: VA

Post by Sergey___K »

А без somevar, как inline? (И еще в xsl:apply-templates match=...)

http://www.exslt.org/dyn/functions/evaluate/index.html
Хотелось бы в рамках http://www.w3.org/TR/1999/REC-xslt-19991116 без "расширений".

Я уже, правда, забыл, зачем мне это было надо. :)
Чего-то левое в башку полезло.
Palych
Уже с Приветом
Posts: 13722
Joined: 16 Jan 2001 10:01

Post by Palych »

Sergey___K wrote:Я уже, правда, забыл, зачем мне это было надо. :)
Чего-то левое в башку полезло.

Вот с этого и надо было начинать :umnik1:
User avatar
vlad12345
Уже с Приветом
Posts: 605
Joined: 14 Feb 2002 10:01
Location: Russia

Post by vlad12345 »

Программирование на XSLT не процедурное, а функциональное (ну или декларативное), поэтому такой подход вряд ли возможен/уместен.
Там даже значения переменных нельзя менять, хоть и называются variable.
Sergey___K
Уже с Приветом
Posts: 13014
Joined: 10 Jul 2001 09:01
Location: VA

Post by Sergey___K »

Программирование на XSLT не процедурное, а функциональное (ну или декларативное), поэтому такой подход вряд ли возможен/уместен.
Именно с декларативной точки зрения это интересно. А еще можно как-то узнать, есть ли template для этого match?
Palych
Уже с Приветом
Posts: 13722
Joined: 16 Jan 2001 10:01

Post by Palych »

Sergey___K wrote: А еще можно как-то узнать, есть ли template для этого match?


define "match"...
Sergey___K
Уже с Приветом
Posts: 13014
Joined: 10 Jul 2001 09:01
Location: VA

Post by Sergey___K »

define "match"...


....
<xsl:apply-templates select="//aaa" />
...
...

<xsl:template match="aaa">
...
...
</xsl:template>
Palych
Уже с Приветом
Posts: 13722
Joined: 16 Jan 2001 10:01

Post by Palych »

Sergey___K wrote:
define "match"...


....
<xsl:apply-templates select="//aaa" />
...
...

<xsl:template match="aaa">
...
...
</xsl:template>


Vse ravno ne ponyal :pain1:
Gde tut "match"? Znachenie selecta?
Esli tak - esli template matches - znachit template glya etogo "match" est'... Na etom XSLT sobstvenno osnovan...
Sergey___K
Уже с Приветом
Posts: 13014
Joined: 10 Jul 2001 09:01
Location: VA

Post by Sergey___K »

Ну, есть ли темплейт для этого селекта или нет.
Это может быть нужно например вот для чего: XSL и XML создаются динамически, в зависимости от каких-то левых метадат и нужно тупиковые ветки ловить . В декларативных терминах пролога это что-то вроде второго match, что говорит "не мужик":

goal:- match(vasya).

match(X):- man(X),!.
match(X):- write('Не мужик'), fail.

man(vova).
man(petya).
man(lelik).
Palych
Уже с Приветом
Posts: 13722
Joined: 16 Jan 2001 10:01

Post by Palych »

Хороший пример! Ностальгический... ;)

Тут дело в том, что правила пролога != темплейтам [XSLT]

Груо говоря, у них нет значения. Снаружи нельзя узнать согласовано правило или нет.

Темплейты предназначены для свершения некоего действа, а не возврата значения. Так что такой трюк в [XSLT] не пройдет.

Return to “Вопросы и новости IT”