powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / xsl:variable
13 сообщений из 13, страница 1 из 1
xsl:variable
    #33746136
Katt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: 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.
<xsl:stylesheet version="1.1" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!-- много всяких правильных шаблонов...-->
<xsl:template match="DATA">
	<TR>
	<TD width="350pt"><xsl:value-of select="EVENT" /></TD>
	
	<xsl:template match="DATE">
	<xsl:variable name="dt" select="DATE" />
             <TD>
	 <xsl:choose>
	  <xsl:when test="number(substring($dt, 1, 4)) and
                       substring($dt, 5, 1) = '.' and
                       substring($dt, 6, 2) <= 12 and
                       substring($dt, 8, 1) = '.' and
                       substring($dt, 9, 2) <= 31">
	  	<xsl:value-of select="$dt" />
	  </xsl:when>
	  <xsl:otherwise>
		<xsl:value-of select="substring($dt, 1, 1)" />
          </xsl:otherwise>
	 </xsl:choose>
             </TD>
	</xsl:variable>		
	</xsl:template>

	<TD><xsl:value-of select="TIME" /></TD>
	</TR>
</xsl:template>
</xsl:stylesheet>
И вот он ругается следующим образом:
Тег конца "xsl:variable" не соответствует тегу начала "xsl:template".
...
Рейтинг: 0 / 0
xsl:variable
    #33746672
Виктор1111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Могу ошибаться, но разве шаблон в шаблоне может быть?
...
Рейтинг: 0 / 0
xsl:variable
    #33746760
Асёл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лишний закрывающий тег
</xsl:variable>
...
Рейтинг: 0 / 0
xsl:variable
    #33747207
Katt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо. Нашла. :)
Только теперь следующая проблема в другом - объвляю переменную, записываю в неё значение элемента DATE:
Код: plaintext
1.
2.
...
<xsl:variable name="dat" select="DATE" />
А следующая переменная $y - не видит $dat:
Код: plaintext
1.
2.
3.
4.
5.
<xsl:variable name="y">	
	<xsl:number value="substring($dat, 1, 4)" />
</xsl:variable>	
<TD><xsl:value-of select="$y"/></TD>
...
...
Рейтинг: 0 / 0
xsl:variable
    #33747404
Виктор1111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
KattСпасибо. Нашла. :)
Только теперь следующая проблема в другом - объвляю переменную, записываю в неё значение элемента DATE:
Код: plaintext
1.
2.
...
<xsl:variable name="dat" select="DATE" />
А следующая переменная $y - не видит $dat:
Код: plaintext
1.
2.
3.
4.
5.
<xsl:variable name="y">	
	<xsl:number value="substring($dat, 1, 4)" />
</xsl:variable>	
<TD><xsl:value-of select="$y"/></TD>
...

попробуй так, в 2 строки:
<xsl:number name = "у" value="substring(DATE, 1, 4)" />
<TD><xsl:value-of select="$y"/></TD>
Но это если я правильно понимаю тег number...
...
Рейтинг: 0 / 0
xsl:variable
    #33747418
Виктор1111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Виктор1111 KattСпасибо. Нашла. :)
Только теперь следующая проблема в другом - объвляю переменную, записываю в неё значение элемента DATE:
Код: plaintext
1.
2.
...
<xsl:variable name="dat" select="DATE" />
А следующая переменная $y - не видит $dat:
Код: plaintext
1.
2.
3.
4.
5.
<xsl:variable name="y">	
	<xsl:number value="substring($dat, 1, 4)" />
</xsl:variable>	
<TD><xsl:value-of select="$y"/></TD>
...

попробуй так, в 2 строки:
<xsl:number name = "у" value="substring(DATE, 1, 4)" />
<TD><xsl:value-of select="$y"/></TD>
Но это если я правильно понимаю тег number...

Пардон, чушь полную написал, кажется number сразу выводит...
Перепиши так:
<xsl:variable name="dat" select="DATE" />
<TD><xsl:number value="substring($dat, 1, 4)" /></TD>

А еще, наверно, можно в 1 строку:
<TD><xsl:number value="substring(DATE, 1, 4)" /></TD>

Зачем же столько вариаблей плодить?!:))
...
Рейтинг: 0 / 0
xsl:variable
    #33747633
Katt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В обоих случаях он понимает первый параметр substring как строку! Не зависимо от того, переменная это (когда пишу $) или элемент (когда DATE)....!!
Может, у меня браузер чего-н не поддерживает?
...
Рейтинг: 0 / 0
xsl:variable
    #33748004
Виктор1111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
KattВ обоих случаях он понимает первый параметр substring как строку! Не зависимо от того, переменная это (когда пишу $) или элемент (когда DATE)....!!
Может, у меня браузер чего-н не поддерживает?

6-й эксплорер по комментам в интернете должен все поддерживать... Я сам этим не парюсь - у меня все на сервере работает...
...
Рейтинг: 0 / 0
xsl:variable
    #33748239
Асёл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ашибка.
<xsl:variable name="dat" select="DATE" />
Надо таак
<xsl:variable name="dat" select="text()" />
У тебя текущий нод = DATE. Из него нужно выбрать текст. А в твоём коде выбирается node-set, который пустой, так как в ноде DATE нет поднод DATE
...
Рейтинг: 0 / 0
xsl:variable
    #33748609
Katt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо огромное!!! Заработало!!
На будущее вопрос:
а если текст надо извлечь из определённого детёныша узла:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
<!DOCTYPE EXAMS
     [
     <!ELEMENT EXAMS (DATA)*>
     <!ELEMENT DATA (EVENT, DATE, TIME)>
     <!ELEMENT EVENT (#PCDATA)>     
     <!ELEMENT DATE (#PCDATA)>          
     <!ELEMENT TIME (#PCDATA)>
     ]
>
...
             <xsl:template match="DATE">
 	<TR>
	<TD width="350pt"><xsl:value-of select="EVENT" /></TD>
	<xsl:variable name="dt" select="child::text()" />
             ....
тогда как указать кокретный child?
...
Рейтинг: 0 / 0
xsl:variable
    #33749526
Виктор1111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
KattСпасибо огромное!!! Заработало!!
На будущее вопрос:
а если текст надо извлечь из определённого детёныша узла:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
<!DOCTYPE EXAMS
     [
     <!ELEMENT EXAMS (DATA)*>
     <!ELEMENT DATA (EVENT, DATE, TIME)>
     <!ELEMENT EVENT (#PCDATA)>     
     <!ELEMENT DATE (#PCDATA)>          
     <!ELEMENT TIME (#PCDATA)>
     ]
>
...
             <xsl:template match="DATE">
 	<TR>
	<TD width="350pt"><xsl:value-of select="EVENT" /></TD>
	<xsl:variable name="dt" select="child::text()" />
             ....
тогда как указать кокретный child?

Ну так в таком случае как раз и надо писать select="<имя подчиненного тега>"
...
Рейтинг: 0 / 0
xsl:variable
    #33749762
Асёл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Виктор1111 KattСпасибо огромное!!! Заработало!!
На будущее вопрос:
а если текст надо извлечь из определённого детёныша узла:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
<!DOCTYPE EXAMS
     [
     <!ELEMENT EXAMS (DATA)*>
     <!ELEMENT DATA (EVENT, DATE, TIME)>
     <!ELEMENT EVENT (#PCDATA)>     
     <!ELEMENT DATE (#PCDATA)>          
     <!ELEMENT TIME (#PCDATA)>
     ]
>
...
             <xsl:template match="DATE">
 	<TR>
	<TD width="350pt"><xsl:value-of select="EVENT" /></TD>
	<xsl:variable name="dt" select="child::text()" />
             ....
тогда как указать кокретный child?

Ну так в таком случае как раз и надо писать select="<имя подчиненного тега>"
Совершенно верно, в данном случае <xsl:variable name="dt" select="EVENT/text()" /> и <xsl:variable name="dt" select="EVENT" /> приведут к одинаковому результату (текстовое значение тега EVENT). Это связано с тем, что при преобразовании node-set в текст берётся суммарное текстовое значение всех нод из сета. axis child можно опустить, так как он используется по дефолту
...
Рейтинг: 0 / 0
xsl:variable
    #33750669
Katt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо большое!
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / xsl:variable
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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