Как ДОБАВИТЬ BR в текст вместо перевода каретки ?

MoonCat

Старожил PHPCluba
Как ДОБАВИТЬ BR в текст вместо перевода каретки ?

есть некий формат XML , его планирется использовать в разных приложениях , в том числе и не имеющих ничего общего с HTML , поэтому вставление тэгов <br/> не совсем правильным вроде ....

поэтому вопрос как при обработке xml текста с помощью XSL
сделать так что бы внутри некоторого тэга все переводы строк заменялись на BR ?

Может кто сталкивался с этим ? :confused:
 

tony2001

TeaM PHPClub
Кром, ты уверен, что [m]nl2br[/m] - это четкий ответ на вопрос "как при обработке xml текста с помощью XSL сделать так что бы внутри некоторого тэга все переводы строк заменялись на BR ?" ?
 

MoonCat

Старожил PHPCluba
наверное он думает что XML в PHP собирается и совсем нетрудно переводы строк заменить на BR ....
но задача несколько другая
 

Кром

Новичок
tony2001, а какие видятся затруднения в том чтобы фрагмент текста обработать функцией замены первода строки? Обясни, пожалуйста.
 

tony2001

TeaM PHPClub
Кром:
вчитайся в вопрос.
тут РНР с nl2br() не в тему.

MoonCat:
может проще через <pre></pre> ?
 

MoonCat

Старожил PHPCluba
Автор оригинала: tony2001

MoonCat:
может проще через <pre></pre> ?
вообщем неплохая мысль и главное на 100% работающая , спасибо !!! :)

но просто ради любопытства неужели нет вариантов с BR ? :confused:
 

Кром

Новичок
tony2001, я имел ввиду пользовательские комментарии, где масса примеров по вопросу замены перевода строк.
 

sokov

Guest
Вообще задача замены nl2br в теле XML (если я правильно понял) непростая. Самое эффективное решение - регэкспами через JavaScript, но если парсер это не поддерживает, то поможет такой шаблон.
Сохранено с форума http://www.dpawson.co.uk/xsl/ , который упал чё-то. Жалко, хороший ресурс был...
 

tony2001

TeaM PHPClub
MoonCat:
честно говоря, я в этом мало чего понимаю.
знаю только то, что в мане по РНР, который генерится из DocBook XML это решается через <pre>.
 

jian

Guest
a chego boyatsa stavit <br/> ili lyuboi rdugoi element, naprimer <karetka/>.
naprimer:

xml:

<?xml version="1.0" encoding="UTF-8"?>
<root>
perevod stroki.perevod stroki.perevod<br/> stroki.perevod stroki.<karetka/>perevod <chtobi-to-nibilo/>stroki.
</root>

xslt:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:eek:utput method="html" indent="yes"/>

<xsl:template match="/root" >

dlya html:
<xsl:apply-templates/>

ne dlya html:
<xsl:apply-templates>
<xsl:with-param name="kill_br" select="'kill_br'"/>
</xsl:apply-templates>

</xsl:template>


<xsl:template match="*" >
<xsl:param name="kill_br"/>
<xsl:choose>
<xsl:when test="name()=text()">
<xsl:value-of select="."/>
</xsl:when>
<xsl:eek:therwise>
<xsl:if test="not($kill_br)">
<br/>
</xsl:if>
</xsl:eek:therwise>
</xsl:choose>

</xsl:template>

</xsl:stylesheet>


rezult:

jian@decha-b:~/xslt_work$ ./ext-func2 test.xsl test.xml
transform time = 662

dlya html:
perevod stroki.perevod stroki.perevod<br> stroki.perevod stroki.<br>perevod <br>stroki.

ne dlya html:
perevod stroki.perevod stroki.perevod stroki.perevod stroki.perevod stroki.
 

jian

Guest
Автор оригинала: MoonCat
наверное он думает что XML в PHP собирается и совсем нетрудно переводы строк заменить на BR ....
но задача несколько другая
xml:
<?xml version="1.0" encoding="UTF-8"?>
<root>
Nukus Pronunciation Key, city (1989 pop. 170,362), capital
of Karakalpak Republic, W Uzbekistan, in the Khwarazm oasis and on the
Amu Darya River. It has alfalfa and food-processing and other light
industries, as well as a notable modern art museum.
</root>

xsl:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:eek:utput method="html" indent="yes"/>

<xsl:template match="/root" >
<xsl:call-template name="nukus">
<xsl:with-param name="text" select="."/>
</xsl:call-template>
</xsl:template>

<xsl:template name="nukus" >
<xsl:param name="text"/>
<xsl:param name="cr"><xsl:text>
</xsl:text></xsl:param>
<xsl:if test="$text">
<xsl:value-of select="substring-before($text,$cr)"/><br/>
<xsl:call-template name="nukus">
<xsl:with-param name="text" select="substring-after($text,$cr)"/>
</xsl:call-template>
</xsl:if>
</xsl:template>
</xsl:stylesheet>

rezul't:
jian@decha-b:~/xslt_work$ ./ext-func2 test.xsl test.xml
transform time = 856
<br>Nukus Pronunciation Key, city (1989 pop. 170,362), capital<br>of Karakalpak Republic, W Uzbekistan, in the Khwarazm oasis and on the<br>Amu Darya River. It has alfalfa and food-processing and other light<br>industries, as well as a notable modern art museum.<br>

cheers

jian
 
Сверху