Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Перенос строки в xslt / 10 сообщений из 10, страница 1 из 1
10.02.2011, 15:42
    #37109462
Альтаир
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перенос строки в xslt
Добрый день.
Делаю xslt-преобразование. Необходимо перед каждым символом " - " в тексте сделать перенос строки.
Как это можно сделать?
...
Рейтинг: 0 / 0
10.02.2011, 16:05
    #37109555
Альтаир
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перенос строки в xslt
Всё. Проблема решена.
Код: 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.
32.
33.
34.
35.
36.
 <xsl:template name="replace">            
       <xsl:param name="input"/>            
       <xsl:param name="from"/>            
                  

       <xsl:choose>            
           <xsl:when test="contains($input, $from)">            
               <!--   вывод подстроки предшествующей образцу  + вывод строки замены -->            
               <xsl:value-of select="substring-before($input, $from)"/> .           
              
               <br/>         
				-

               <!--   вход в итерацию -->            
               <xsl:call-template name="replace">            
                   <!--  в качестве входного параметра задается подстрока после образца замены  -->            
                   <xsl:with-param name="input" select="substring-after($input, $from)"/>            
                   <xsl:with-param name="from" select="$from"/>            
                          
               </xsl:call-template>            

           </xsl:when>            
           <xsl:otherwise>            
               <xsl:value-of select="$input"/>            
           </xsl:otherwise>            
       </xsl:choose>            
   </xsl:template>       
 

    <xsl:call-template name="replace">            
           <xsl:with-param name="input" select="text()"/>            
           <xsl:with-param name="from" select="'. - '"/>            
                   
       </xsl:call-template>    


...
Рейтинг: 0 / 0
14.02.2011, 13:42
    #37114889
Альтаир
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перенос строки в xslt
Оказалось, что данный код не работает в мазиле. В чём может быть дело?..
...
Рейтинг: 0 / 0
14.02.2011, 14:42
    #37115082
Альтаир
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перенос строки в xslt
а можно ли работать с кодом символа? искать не "-", а символ переноса строки например.
...
Рейтинг: 0 / 0
14.02.2011, 15:04
    #37115158
refreg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перенос строки в xslt
Альтаир,

Поясни, что же, наконец, надо?
1. Не ясно, какой XML исходный, и XML-ли ?
2. Не ясно, что на выходе? Если HTML, то перенос строки <br />, если текст, то, наверное, x0A
...
Рейтинг: 0 / 0
14.02.2011, 15:28
    #37115223
Альтаир
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перенос строки в xslt
Просто интересно, можно ли искать символ переноса строки и заменять его на br.
Так не работает:
<xsl:with-param name="from" select="'x0A'"/>
...
Рейтинг: 0 / 0
14.02.2011, 16:10
    #37115336
refreg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перенос строки в xslt
Альтаир,

Сомневаюсь, что это те поможет... Но, вдруг...
Код: plaintext
<xsl:with-param name="from" select="'&#x0A;'"/>
...
Рейтинг: 0 / 0
14.02.2011, 23:02
    #37115941
refreg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перенос строки в xslt
В мозиле открывается:

xml
Код: plaintext
1.
2.
3.
4.
5.
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="q2.xsl"?>
<root>one
two
three
</root>

q2.xsl
Код: 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:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
	<xsl:output method="html"/>
	<!-- -->
	<xsl:template match="/">
		<html>
			<body>
				<xsl:call-template name="replace">
					<xsl:with-param name="input" select="/root/text()"/>
					<xsl:with-param name="from" select="'&#xA;'"/>
				</xsl:call-template>
			</body>
		</html>
	</xsl:template>
	<!-- -->
	<xsl:template name="replace">
		<xsl:param name="input"/>
		<xsl:param name="from"/>
		<xsl:choose>
			<xsl:when test="contains($input, $from)">
				<xsl:value-of select="substring-before($input, $from)"/>
				<br/>
				<xsl:call-template name="replace">
					<xsl:with-param name="input" select="substring-after($input, $from)"/>
					<xsl:with-param name="from" select="$from"/>
				</xsl:call-template>
			</xsl:when>
			<xsl:otherwise>
				<xsl:value-of select="$input"/>
			</xsl:otherwise>
		</xsl:choose>
	</xsl:template>
</xsl:stylesheet>

html
Код: plaintext
1.
2.
<html>
   <body>one<br>two<br>three<br></body>
</html>
...
Рейтинг: 0 / 0
15.02.2011, 16:56
    #37117691
Альтаир
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перенос строки в xslt
refreg,

Да да. всё хорошо. У меня тоже всё нормально отображается, это у некоторых пользователей, может версия более ранняя.
Ладно. оставим так.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
22.11.2018, 23:08
    #39737223
dizi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перенос строки в xslt
Здравствуйте!
Работает успешно, если в составе исходного xml есть узел, и мы передаем его содержимое через test/text().
<test>
csc
scsd
scsdcs
</test>

А как быть в случае, если текст с переносами сидит в атрибуте? Как правильно его вытащить со спецсимволами? В отладчике на входе в темплейт он сплошной строкой
<test value="Строка1
Строка2
Строка3" id="param1"/>
...
Рейтинг: 0 / 0
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Перенос строки в xslt / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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