Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: X технологии > HTML теги в XML


Автор: starmaster 3.3.2006, 10:23
Из текстового поля по форме передаётся текст, далее он с помощью DOM XML и XSLT преобразуется в HTML. Всё бы хорошо, но я хочу разрешить пользователю некоторые теги, он их добавляет с помощью кодов, к примеру , которые затем преобразуются в нормальные HTML-теги <b></b>. Далее вставляем в XML и тут проблема, например из такого XML:

Код

<?xml version="1.0" encoding="windows-1251"?>
<root>
          <post>
                    Some text1
                    <bold>text in bold</bold>
                    Some text2
                    <italic>text in italic</italic>
                    Some text3
                    <bold><italic>text in bold and in italic</italic></bold>
                    Some text4
          </post>
</root>


С помощью XSLT должен получиться результат:

Код

<html>
      <head>
            <title>
                Title
             </title>
      </head>

       <body>
                Some text1 <b>text in bold</b> Some text2 <i>text in italic</i> Some text3 <b><i>text in bold and in italic</i></b> Some text4
       </body>
</html>


Как это преобразование реализовать лучше всего?

Автор: starmaster 4.3.2006, 09:46
Всё оказалось намного проще чем я думал. И делается это простым XSLT, у тега <xsl:value-of/> есть замечательный аттрибут disable-output-escaping :-)

Автор: capitan 25.4.2007, 17:33
Цитата

disable-output-escaping

Вопрос в следующем: данный атрибут работает только в ишаке. Можно как-то реализовать вывод всех тегов хотя бы под мазилу?
А то они все эскейпятся.  smile 

Автор: Alx 26.4.2007, 15:36
судя по условию я вообще проблемы не вижу..

Код

<xsl:template match="bold">
  <b><xsl:apply-templates/></b>
</xsl:template>
<xsl:template match="italic">
  <i><xsl:apply-templates/></i>
</xsl:template>

Автор: capitan 26.4.2007, 18:55
Alx
На условие внимание не обращай, оно не моё. Просто не стал делать новую тему.
Предположим в <post>  встречаются <ul>, <il> и тому подобные теги.

Автор: Alx 26.4.2007, 19:14
меня тоже похожий вопрос волнует:
я в xslt (<xsl:output method="html"/>) пишу такое:

1.
<script>alert(1>0)</script>
выводит:
<script>alert(1&gt;0)</script>

2.
<script>alert(1&gt;0)</script>
выводит:
<script>alert(1&gt;0)</script>

3.
<script>alert(0&lt;1)</script>
выводит:
<script>alert(0&lt;1)</script>

и, наконец
4.
<script>alert(0<1)</script>

вообще выхывает ошибку парсера (PHP:SimpleXML)... что делать??

Автор: check 3.5.2007, 10:27
2Alx

Должно получиться так
Код

<script>
   //<![CDATA[

    //любой код

    //]]>
</script>

Автор: Alx 3.5.2007, 15:27
check, 
пробелма в том, что у меня в срипте используются теги XSL (xsl:value-of, например).
есть пихать в CDATA, то они экранируются.. а мне это не нужно.. мне бы только с > и < разобраться...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)