disable-output-escaping и XSL

matross

Новичок
disable-output-escaping и XSL

Имеется xml файл, который был получен при помощи Pear::sql2xml. В нем есть следующее поле
<text>
dfsdfgfg sdfgdfg dfgdfgfg <img src='im.jpg'> dfsfdg dsfgdfg
sdfgdsfg
dfgfdg
dfgdfg
ghfg
fgfhgh <a href='index.php'><b>Link</b></a>
</text>

===Вопрос===
При обработке этого xml файла с помощью xsl при выводе поля <text> делаю следующее
<xsl:value-of select="text" disable-output-escaping="yes"/>

Отображаю html форматирование при выводе <text> при помощи конструкции
disable-output-escaping="yes"!!!

Все хорошо, но в Explore все работает отлично,а в Opere нет!!!

В чем проблема???
 

slach

Новичок
;) непонятно
ты трансформацию на сервере делаешь или на клиенте ??

дада, и что конкретно у тебя в опере "не так" ?
 

matross

Новичок
Автор оригинала: slach
;) непонятно
ты трансформацию на сервере делаешь или на клиенте ??

дада, и что конкретно у тебя в опере "не так" ?
Выводит все отлично, но с html тегами!!!!(в opera)

-~{}~ 17.11.04 10:44:

Автор оригинала: slach
;) непонятно
ты трансформацию на сервере делаешь или на клиенте ??

дада, и что конкретно у тебя в опере "не так" ?
Выводит все отлично, но с html тегами!!!!(в opera), а в Netscape - вообще просто пустая страница, знаю - опыта мало, но я учусь.
 

matross

Новичок
Автор оригинала: chameleon
а надо без? :)..
В теге <text></text> имеются html вставки, вот мне и нужно выводить их как html. Например если есть <b>link</b>, то выводить должен не <b>link</b>, а link...
 

chameleon

Новичок
html который получается в результате трансформации правильный?
т.е. там не эскейпятся типа:
Код:
&lt;b&gt;link&lt;/b&gt;
 

matross

Новичок
Автор оригинала: chameleon
html который получается в результате трансформации правильный?
т.е. там не эскейпятся типа:
Код:
&lt;b&gt;link&lt;/b&gt;
Именно, Pear::sql2xml трансформирует все скобки в такой вид
&lt;P align=justify&gt; <p align=justify>!!!
 

chameleon

Новичок
ну а при чем тут тогда вообще XSLT, если у тебя уже во входном дереве все проэскейплено? disable-output-escaping="yes" говорит XSLT-процессору не "вернуть все взад", а "вообще-то юзер просит не трогать", а чего там трогать, если уже "усе в порядке" :)...
 

slach

Новичок
повторяю вопрос
ТРАНСФОРМАЦИЯ на сервере ? или на КЛИЕНТЕ?

если на сервере, тогда результирующий HTML НЕ ЗАВИСИТ от БРАУЗЕРА

я понятно изьясняюсь ??

-~{}~ 17.11.04 13:17:

хамелеон прав
 

matross

Новичок
Автор оригинала: slach
повторяю вопрос
ТРАНСФОРМАЦИЯ на сервере ? или на КЛИЕНТЕ?

если на сервере, тогда результирующий HTML НЕ ЗАВИСИТ от БРАУЗЕРА

я понятно изьясняюсь ??

-~{}~ 17.11.04 13:17:

хамелеон прав
<?
require_once ("DB.php");
require_once("SQL2XML/sql2xml.php");
$db = DB::connect("mysql://root@localhost/td");
$sql2xml = new xml_sql2xml();
$sql2xml->setEncoding("windows-1251", "UTF-8");
$result = $db->query("select iarticle_name, iarticle_text from b_iarticle where iarticle_id=204");
$xmlstring = $sql2xml->getXML($result);
?>

В $xmlstring у меня результирующий невалидный xml документ!!! Как мне преобразовать его в html и вывести!!!

Запутался что-то!!!!
 

chameleon

Новичок
откажись от использования sql2xml либо отнаследуй и перепиши метод, который делает htmlentities или что-то в этом роде.
такой класс как sql2xml пишется самостоятельно _под твои нужды_ за 5 мин, который скажем результат выборки (как я понимаю у тебя там кривой html) не сразу будет в xml запихивать, а перед этим через, например, [m]tidy[/m] прогонять.
 

matross

Новичок
Автор оригинала: chameleon
откажись от использования sql2xml либо отнаследуй и перепиши метод, который делает htmlentities или что-то в этом роде.
такой класс как sql2xml пишется самостоятельно _под твои нужды_ за 5 мин, который скажем результат выборки (как я понимаю у тебя там кривой html) не сразу будет в xml запихивать, а перед этим через, например, [m]tidy[/m] прогонять.
В моем случае $xmlstring ='<?xml version="1.0"?>
<root><result><row><name>&#x417;&#x432;&#x435;&#x440;&#x43D;&#x435;&#x43D;&#x43D;&#x44F; &#x413;&#x43E;&#x43B;&#x43E;&#x432;&#x438; &#x43F;&#x440;&#x430;&#x432;&#x43B;i&#x43D;&#x43D;&#x44F;</name><text>&lt;a href='http://localhost'&gt;link&lt;/a&gt;&#13;
&lt;p align='justify'&gt;Nu tipa text&lt;/p&gt;</text></row></result></root>
';

А что с этим дальше нужно делать для получения html
 

chameleon

Новичок
нет в базе теги, а вот при трансфрмации такое...
таакк....идем читать предыдущий пост "ну а при чем тут тогда вообще XSLT...."...
В моем случае $xmlstring ='<?xml version="1.0"?>
<root><result><row><name>Звернення Голови правлiння</name><text>&lt;a href='http://localhost'&gt;link&lt;/a&gt;
&lt;p align='justify'&gt;Nu tipa text&lt;/p&gt;</text></row></result></root>
';
А что с этим дальше нужно делать для получения html
да не дальше, а вместо! НЕ вытаскивай данные с помощью sql2xml он тебе все портит! и идем читать предыдущий пост "откажись от использования sql2xml либо..."
 

matross

Новичок
Автор оригинала: chameleon
таакк....идем читать предыдущий пост "ну а при чем тут тогда вообще XSLT...."...

да не дальше, а вместо! НЕ вытаскивай данные с помощью sql2xml он тебе все портит! и идем читать предыдущий пост "откажись от использования sql2xml либо..."
Ок! Как тогда из базы втянуть данные и внести их в xml???
 

chameleon

Новичок
Ок! Как тогда из базы втянуть данные и внести их в xml???
ну пипец приехали :).. с чем конкретно поблемы? как вытянуть или как внести? имхо это уже RTFM-ом попахивает..
 

matross

Новичок
Автор оригинала: chameleon
ну пипец приехали :).. с чем конкретно поблемы? как вытянуть или как внести? имхо это уже RTFM-ом попахивает..
Пишешь вот такую штуку
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<?
error_reporting(E_ALL);
ini_set("display_errors",1);

require_once ("DB.php");
require_once("xml_sql/sql2xml.php");
$db = DB::connect("mysql://root@localhost/daniel");
$sql2xml = new xml_sql2xml();
$sql2xml->setEncoding("windows-1251", "UTF-8");
$result = $db->query("select name, text from articles");
$xmlstring = $sql2xml->getXML($result);

$ar = array('/_xml' => $xmlstring);

$xh = xslt_create();
$result = xslt_process($xh, 'arg:/_xml', "article.xsl", null, $ar);

if ($result)
echo "<br>".$result;
else
echo "Error! Cannot transform this file";
?>

и все работает как часики!!!
 
Сверху