Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Формирование данных из <xsl:template> / 2 сообщений из 2, страница 1 из 1
21.07.2006, 20:28
    #33871402
darknode
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формирование данных из <xsl:template>
Добрый вечер!
Если кто знает, плиз, подскажите где бажу

Есть два темплейта:


Этот формирует (по крайней мере пытается фомировать) элемент типа <input .....> по входящим данным
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
 
     <xsl:template name="radioInput">
		<xsl:param name="value" />
		<xsl:param name="id" />
		<input type="radio">
			<xsl:attribute name="id">
				radioListValue_id_<xsl:value-of select="$value" />
			</xsl:attribute>
			<xsl:attribute name="name">
				radioListValue_<xsl:value-of select="$id" />
			</xsl:attribute>
			<xsl:attribute name="value">
				<xsl:value-of select="$value" />
			</xsl:attribute>
		</input>
		<xsl:value-of select="$value" />
	</xsl:template>

Вот это рекурсивно обрабатывает входящую строку и режет ее на элементы, разделителем элементов в строке являеться ";", и для каждого элемента "вызавает" <xsl:template name="radioInput">, тоесть предидущий темплейт.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
 
            <xsl:template name="markup" match="text()" mode="CSV">
		<xsl:param name="mask" />
		<xsl:param name="delimiter" select="';'" />
		<xsl:param name="id" />
		<xsl:choose>
			<xsl:when test="contains($mask,$delimiter)">
				<xsl:variable name="result">
					<xsl:call-template name="radioInput">
						<xsl:with-param name="value" select="substring-before($mask, $delimiter)" />
						<xsl:with-param name="id" select="$id" />
					</xsl:call-template>
				</xsl:variable>
				<xsl:value-of select="$result" />
				<xsl:call-template name="markup">
					<xsl:with-param name="mask" select="substring-after($mask, $delimiter)" />
					<xsl:with-param name="id" select="$id" />
					<xsl:with-param name="delimiter" select="$delimiter" />
				</xsl:call-template>
			</xsl:when>
			<xsl:otherwise>
				<xsl:variable name="result">
					<xsl:call-template name="radioInput">
						<xsl:with-param name="value" select="$mask" />
						<xsl:with-param name="id" select="$id" />
					</xsl:call-template>
				</xsl:variable>
				<xsl:value-of select="$result" />
			</xsl:otherwise>
		</xsl:choose>
	</xsl:template>

<xsl:template name="markup" > - данный темплейт вызываю вот таким вот образом :

Код: plaintext
1.
2.
3.
4.
5.
6.
      <xsl:variable name="result">
			<xsl:call-template name="markup">
				<xsl:with-param name="mask" select="@mask" />
				<xsl:with-param name="id" select="test" />			</xsl:call-template>
			</xsl:variable>
		<xsl:value-of select="$result" />

В @mask лежит вот такая строка "1;2;3;4;5;6;7"

В итоге на выходе всего это волучаю "1234567"
А хотелось бы получить набор input'ов
Подскажите плиз где собака зарыта
...
Рейтинг: 0 / 0
25.07.2006, 17:02
    #33877560
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Формирование данных из <xsl:template>
попробуй в конце <xsl:copy-of select="$result" />
...
Рейтинг: 0 / 0
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Формирование данных из <xsl:template> / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]