powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Перенос строки в xslt
10 сообщений из 10, страница 1 из 1
Перенос строки в xslt
    #37109462
Альтаир
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
Делаю xslt-преобразование. Необходимо перед каждым символом " - " в тексте сделать перенос строки.
Как это можно сделать?
...
Рейтинг: 0 / 0
Перенос строки в xslt
    #37109555
Альтаир
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всё. Проблема решена.
Код: 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
Перенос строки в xslt
    #37114889
Альтаир
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Оказалось, что данный код не работает в мазиле. В чём может быть дело?..
...
Рейтинг: 0 / 0
Перенос строки в xslt
    #37115082
Альтаир
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а можно ли работать с кодом символа? искать не "-", а символ переноса строки например.
...
Рейтинг: 0 / 0
Перенос строки в xslt
    #37115158
refreg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Альтаир,

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

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

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
Перенос строки в xslt
    #37117691
Альтаир
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
refreg,

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

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


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