Xpoint
   [напомнить пароль]

Вывод CDATA после XSLT-трансофрмации

Метки: [без меток]
2009-09-07 05:07:32 [обр] AndrewM[досье]

Господа! Сломал себе мозг. Не получается :(
Имею XML:

<?xml version="1.0" encoding="windows-1251" ?>
<page>
  <aaa>12345</aaa>
</page>

Хочу получить:

<?xml version="1.0" encoding="windows-1251"?>
<bbb>
  <![CDATA[12345]]>
</bbb>

Использую PHP5 и XSLT:

<?xml version="1.0" encoding="windows-1251"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" indent="yes" cdata-section-elements="aaa" encoding="windows-1251" />

  <xsl:template match="aaa">
  <bbb>
    <xsl:copy-of select="." />
  </bbb>  
  </xsl:template>
  
</xsl:stylesheet>

Получается:

<?xml version="1.0" encoding="windows-1251"?>
<bbb>
  <aaa><![CDATA[12345]]></aaa>
</bbb>

А вот эти-вот <aaa></aaa> - мне совсем не нужны! :(
Как сделать так, как я хочу? Может быть каким-то другим способом?

спустя 4 часа 25 минут [обр] Lynn «Кофеман»(52/571)[досье]
В cdata-section-elements надо написать bbb, а вместо <xsl:copy-of select="."/> написать <xsl:value-of select="."/>.
спустя 16 часов [обр] AndrewM[досье]

Спасибо, действительно работает! ;)
Значит я не правильно понял смысл параметра cdata-section-elements

Вообще, если честно, этот вопрос я задал ради вот какой конструкции:

<script type="text/javascript">
//<![CDATA[

//]]>
</script>

- как обсуждалось на этом форуме - это оптимальный способ вывода JS в XHTML, чтобы валидатор не ругался на i-- и a='<div>'
Не подскажите, как можно вывести такую конструкцию?

спустя 8 часов [обр] Lynn «Кофеман»(52/571)[досье]
Лучше всего вообще не выводить JS в xhtml, сбережёте нервные клетки.
спустя 8 часов [обр] AndrewM[досье]

Ну, вроде бы с конструкцией

<script type="text/javascript">
//<![CDATA[

//]]>
</script>

- проблем нет. Просто как бы ее вывести через XSLT..?

спустя 3 часа 38 минут [обр] Lynn «Кофеман»(52/571)[досье]
Ну, например Disabling Output Escaping
спустя 20 минут [обр] AndrewM[досье]
О! Спасибо! ;) Изврат, но работает... ;)
<script type="text/javascript">
  <xsl:text disable-output-escaping="yes">&#10;//&lt;![CDATA[</xsl:text>
    <xsl:value-of select="." />
  <xsl:text disable-output-escaping="yes">//]]&gt;&#10;</xsl:text>
</script>
Powered by POEM™ Engine Copyright © 2002-2005