Ошибки при преобразовании XSLT -> XHTML

Crys

Двинутый новичок
Ошибки при преобразовании XSLT -> XHTML

PHP 5.0.5
Apache 2.0 Handler
-----------------------

В общем, при использовании:
$out->saveXML();

Добавляются левые строки/символы, которые сильно сказываются на внешнем виде страницы.
Пока что борюсь с этим так:

PHP:
$d=$out->saveXML();
$d=str_replace("<script type=\"text/javascript\">[b]<![CDATA[[/b]","<script type=\"text/javascript\">",$d);
$d=str_replace("[b]]][/b]></script>","</script>",$d);
$d=str_replace("[b]<?xml version=\"1.0\" encoding=\"windows-1251\" standalone=\"yes\"[/b]?>
","",$d);
echo $d;
Если же использовать $out->saveHTML() - этих проблем нет, но зато "одиночные" тэги раздваиваются. Пример:
<br /> становится <br></br>
<input type="text" /> становится <input type="text"></input>

Как можно (нужно) правильно выводить чистый XHTML из XSLT?


Thanks!
 

Steamroller

Новичок
Добавляются левые строки/символы, которые сильно сказываются на внешнем виде страницы.
А как именно это сказывается на внешнем виде?
Скрипты и так должны работать.
<?xml ... ?> может конечно на внешний вид повлиять, ну тогда надо в xsl указать <xsl:eek:utput omit-xml-declaration="yes"/>
 

Crys

Двинутый новичок
Steamroller

Выставлял omit-xml-declaration="yes" и "no" - эффект нулевой.
На внешней вид... input-ы другой высоты становятся и т.д. и т.п. То есть на внешний вид - особо разницы нет, но условие стоит - 100% по шаблону.

По поводу скриптов. Если их не обрабатывать, то получается:
Код:
<script type="text/javascript"><![CDATA[
...............
]]></script>
И скрипт - не работает! Вынести его в отдельный файл нельзя, т.к. тут передаются динамические переменные (путь к картинкам, сайту и т.п.)
 

andyjam

Новичок
omit-xml-declaration

и все-таки.
подскажите, пожалуйста, как по-правильному убрать строку
<?xml version="1.0" encoding="Windows-1251" standalone="yes"?>
не используя заморочик, типа str_replace..

и почему на нее omit-xml-declaration не действует??

-~{}~ 17.03.06 15:14:

зы: php 4.3 + libxslt
 

dimgel

Новичок
Я убираю эту строку в PHP5 очень просто:

$s = $doc->saveXML($doc->documentElement);

При этом сохраняется не весь документ, а только выбранный узел с потомками.

А ещё хочу вякнуть насчет CDATA внутри <script>... сорри внутри <style>, что то же самое. Не шибко уместно, зато полезно. Пример с сайта www.ie7.com:

<style type="text/css">
/* <![CDATA[ */

body {
font-family: sans-serif;
text-align: center;
background: #042073;
}

...

/* ]]> */
</style>
 

slach

Новичок
2dimgel ? в чем суть примера то??

ты коментаришь CSS коментарием CDATA секцию через строковые ф-ции PHP ?
 

dimgel

Новичок
Не, это просто пример кода, валидного как с точки зрения XML, так и с точки зрения CSS. Сам я до этого не допер (слабоват в XML). PHP тут вообще не причём.
 

Qasimodo

Новичок
Автор оригинала: slach
2dimgel ? в чем суть примера то??

ты коментаришь CSS коментарием CDATA секцию через строковые ф-ции PHP ?
Суть примера - нужно закоментарить "CDATA" правильными коментариями.
для Javascript+libxml2/libsxlt+linux используется конструкция:
Код:
<script type="bla" language="blabla"><!--//--><![CDATA[
bla
blabla
--
<  >
//]]></script>
xslt:
Код:
<script  type="bla" language="blabla">
<xsl:comment>//</sxl:comment><xsl:text>
bla
</xsl:text>
<xsl:apply-templates select="blabla"/>
<xsl:text>//</xsl:text></script>
 
Сверху