Модераторы: Aliance, skyboy, MoLeX, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> PHP + XML + XSLT 
:(
    Опции темы
Opik
Дата 20.6.2005, 02:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: нет
Всего: 55



Как я понял, современный сайт, созданный по последним технологиям должен быть в этой связке (ну и данные, например в MySQL) и на выходе XHTML.
c XML и тем более с XSLT не знаком, поэтому прошу Вас объяснить. Да, гугл ещё не закрыли, но не нашел примера, где это всё связано в одном примере. Допустим я хочу написать скрипт новостей.
news.php
Код

<?php
  $dsn = 'mysql:dbname=test;host=127.0.0.1';
  $user = 'root';
  $password = '';

  try {
     $dbh = new PDO($dsn, $user, $password);
     $sql = 'SELECT * FROM `news` WHERE news_public = :public';
     $sth = $dbh->prepare($sql, array(PDO_ATTR_CURSOR, PDO_CURSOR_FWDONLY));
     $sth->execute(array(':public' => 1));
     while($row = $sth->fetch())
     {
// $row['news_title'] - название.
// $row['news_author_name'] - имя автора.
// $row['news_text'] - текст новости.
     }

  } catch (PDOException $e) {
     echo 'Connection failed: ' . $e->getMessage();
  }
?>

Как и что организовывать далее?
PM MAIL Skype   Вверх
IZ@TOP
Дата 20.6.2005, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 2
Всего: 73



Мне тоже это очень интересно. Думаю что нужно создать XML документ в который добавлять поочередно ветки с новостями до получения необходимого результата:

Код

<?xml version="1.0" ?>
<News>
    <Item id="1">
        <Title>Заголовок новости</Title>
        <Author>IZ@TOP</Author>
        <Text>текст новости</Text>
    </Item>
    ...
</News>


Далее рисуем свой XSLT шаблон либо используем РНР функции XSLT преобразования.

А вот конкретный пример был бы интересен smile


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Opik
Дата 20.6.2005, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: нет
Всего: 55



IZ@TOP
Не, ну по отдельности я это всё понимаю примерно как ты, но я плохо представляю конечный продукт.
PM MAIL Skype   Вверх
IZ@TOP
Дата 20.6.2005, 20:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 2
Всего: 73



http://ru3.php.net/manual/ru/function.domx...esheet-file.php
Наверное примерно так и выглядит smile


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Opik
Дата 20.6.2005, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: нет
Всего: 55



Код

<?php

$xmldoc = domxml_open_file("dom.xml");
$xsldoc  = domxml_xslt_stylesheet_file ("dom.xsl");
$result  = $xsldoc->process($xmldoc);
 print $result->dump_mem();

?> 

$xmldoc = domxml_open_file("dom.xml"); значит данные хранятся в xml файле, а нам нужно в базе.
PM MAIL Skype   Вверх
IZ@TOP
Дата 21.6.2005, 00:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 2
Всего: 73



Opik, можно сделать тоже самое только с созданным документом, используй функции создания документа или загрузки его из памяти (читай переменной).

Код

<?php

$xmldoc = domxml_new_xmldoc('1.0');
$docroot = $xmldoc->add_root('News');

$newschild = $docroot->new_child('article', '');
$newschild->set_attribute('id', 398);

$newschild->new_child('title', 'Title');
$newschild->new_child('author', 'Author name');
$newschild->new_child('newstext', 'Text news');

/* 
    // Если нужно просмотреть что у нас вышло, вызываем такой кусочек кода:
    // echo htmlspecialchars($xmldoc->dump_mem()); 
*/


// И далее
$xsldoc  = domxml_xslt_stylesheet_file("style.xsl");
$result  = $xsldoc->process($xmldoc);
print $result->dump_mem();

?>



--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Opik
Дата 21.6.2005, 00:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: нет
Всего: 55



IZ@TOP
вот это уже интереснее smile))
PM MAIL Skype   Вверх
IZ@TOP
Дата 21.6.2005, 00:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 2
Всего: 73



Вот что у меня вышло:

Код

<?php

$xmldoc = domxml_new_xmldoc('1.0');
$docroot = $xmldoc->add_root('News');

$newschild = $docroot->new_child('article', '');

$newschild->new_child('date', '12/31/2005');
$newschild->new_child('title', 'Title');
$newschild->new_child('author', 'IZ@TOP');
$newschild->new_child('newstext', 'XSL Templates rules! Ostalos` razobrat`sya s kodirovkami i vse budet rul`no!');

/* 
    // Если нужно просмотреть что у нас вышло, вызываем такой кусочек кода:
    // echo htmlspecialchars($xmldoc->dump_mem()); 
*/


// И далее
$xsldoc  = domxml_xslt_stylesheet_file(dirname(__FILE__)."/style.xsl");
$result  = $xsldoc->process($xmldoc);
print $result->dump_mem();

?>


-- style.xsl
Код

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" />
<xsl:template match="article">
    <html>
    <head>
    <title>Today's greeting</title>
    <style>
        * {
            font-family: Tahoma;
            font-size: 11px;
        }
    </style>
    </head>
    <body>
        <center>
        <div style="width:400;" align="justify">
            <b><xsl:value-of select="date"/></b> | <xsl:value-of select="title"/>
            <p><xsl:value-of select="newstext"/></p>
            <div align="right"><i><xsl:value-of select="author"/></i></div>
        </div>
        </center>
    </body>
</html>
</xsl:template>
</xsl:stylesheet>


Добавлено @ 00:50
осталось разобраться с циклами и условиями и можно брать шаблонную часть Vingrad CMS на себя smile


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Opik
Дата 21.6.2005, 00:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: нет
Всего: 55



правда сами шаблоны какие то странные smile)) короч почитать нужно.
PM MAIL Skype   Вверх
IZ@TOP
Дата 21.6.2005, 00:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 2
Всего: 73



Opik, пожалуйста http://msdn.microsoft.com/library/en-us/xm...0f94488a1cf.asp читай сколько душе угодно. А я спать.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Opik
Дата 21.6.2005, 00:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: нет
Всего: 55



с меня +
PM MAIL Skype   Вверх
Opik
Дата 21.6.2005, 02:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: нет
Всего: 55



Хотя всё равно ничего не ясно. как в ПХП5 работать с XML, а именно создавать на лету.
PM MAIL Skype   Вверх
IZ@TOP
Дата 21.6.2005, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 2
Всего: 73



Opik, вечером поставлю и посмотрю что с этим можно сделать.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Opik
Дата 21.6.2005, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: нет
Всего: 55



Хотя поставил php_domxml.dll... функция domxml_new_doc работает а append_child ругается. хотя думаю моя вина. вообщем буду ещё тестить
PM MAIL Skype   Вверх
Gold Dragon
Дата 21.6.2005, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Призрачный
****


Профиль
Группа: Экс. модератор
Сообщений: 6753
Регистрация: 1.3.2004
Где: Россия, Тамбов

Репутация: нет
Всего: 71



Opik
объясни как поставил, у меня что-то на всё ругается, может скачал что-то не то


--------------------
Нельзя жить в прошлом, оно уже прошло.
Нельзя жить в будущем, оно ещё не наступило.
Нужно жить в настоящем, помня прошлое и думая о будущем!
PM MAIL WWW ICQ   Вверх
Opik
Дата 21.6.2005, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: нет
Всего: 55



в том то и дело, что мы ещё сами не поняли.
PM MAIL Skype   Вверх
IZ@TOP
Дата 21.6.2005, 20:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 2
Всего: 73



Пришел домой, сейчас буду разбираться и тестить все это дело под РНР 5 и РНР 4.3.10.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Opik
Дата 22.6.2005, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: нет
Всего: 55



кстати, те твои предыдущие примеры пашут smile
PM MAIL Skype   Вверх
IZ@TOP
Дата 22.6.2005, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 2
Всего: 73



Opik, что ты сделал? Значит можно использовать этот подход.
Я кстате хочу попробовать поюзать SimpleXML, говорят что с ним работать еще удобнее. Может быть его использовать можно будет для парсинга конфигов.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Opik
Дата 22.6.2005, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: нет
Всего: 55



IZ@TOP
php_domxml.dll поставил, только у тебя там старые функции (по мануалу). а в новой вроде баг есть smile)
PM MAIL Skype   Вверх
IZ@TOP
Дата 22.6.2005, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 2
Всего: 73



Что за баг?

Вот я тут модифицировал немного стили и XSL шаблон:

Код

<?php
$GLOBALS['test']    = 2;
$xmldoc = domxml_new_xmldoc('1.0');
$docroot = $xmldoc->add_root('articles');

$newschild[0] = $docroot->new_child('article', '');
$newschild[0]->set_attribute('id', 1);
$newschild[0]->set_attribute('test', 2);

$newschild[0]->new_child('date', '12/31/2005');
$newschild[0]->new_child('title', 'Title');
$newschild[0]->new_child('author', 'IZ@TOP');
$newschild[0]->new_child('newstext', 'XSL Templates rules! Ostalos` razobrat`sya s kodirovkami i vse budet rul`no!');

$newschild[1] = $docroot->new_child('article', '');
$newschild[1]->set_attribute('id', 2);
$newschild[1]->set_attribute('test', 'test');

$newschild[1]->new_child('date', '12/31/2006');
$newschild[1]->new_child('title', 'Title 2');
$newschild[1]->new_child('author', 'IZ@TOP');
$newschild[1]->new_child('newstext', 'XSL Templates rules! Ostalos` razobrat`sya s kodirovkami i vse budet rul`no!!!!');


/* 
    // Если нужно просмотреть что у нас вышло, вызываем такой кусочек кода:
    // echo htmlspecialchars($xmldoc->dump_mem()); 
*/


// И далее
$xsldoc  = domxml_xslt_stylesheet_file(dirname(__FILE__)."/style.xsl");
$result  = $xsldoc->process($xmldoc);
print $result->dump_mem();


Код

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" />
<xsl:template match="/">
    <html>
    <head>
    <title>n</title>
    <style>
        * {
            font-family: Tahoma;
            font-size: 11px;
        }
    </style>
    </head>
    <body>
        <center>
        <xsl:for-each select="articles/article">
        <div style="width:400;" align="justify">
            <b><xsl:value-of select="date" /></b> | <xsl:value-of select="title" />
            <p><xsl:value-of select="newstext"/></p>
            <div align="right"><i><xsl:value-of select="author" /></i></div>
        </div>
        </xsl:for-each>
        </center>
    </body>
</html>
</xsl:template>
</xsl:stylesheet>



--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Opik
Дата 22.6.2005, 18:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: нет
Всего: 55



IZ@TOP
Код

$node = $dom->create_Element("root");
var_dump($node); // null, а должно быть object

PM MAIL Skype   Вверх
OPG
Дата 23.6.2005, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 25.2.2005

Репутация: нет
Всего: 1



Вопрос в теме немного не связанный.
Предлагаю открыть ветку форума где можно будет поэтапно пройти все стадии установки, создания документа, преобразования, парсинга, и работа с XSLT шаблонами.
Сейчас делаю двигатель сайта на этих технологиях в котором реализована идея как сделать сайт эффективным с той позиции, что повысить эффективность его влияния на принятие нужного тебе решения посетителем сайта. А также не выпускать его с сайтаsmile)) Ведь по сути можно делать быстрый, удобный и т.п. сайт, но о конечной цели почему то забывают. Сайт должен оказывать нужное воздействие на посетителя. Почему то все время пытаются взять дизайном, качеством контента и т.п. Построение сайта на основе шаблонов лишает сайта возможности использвать эффект синергизма. И в тоже время шаблоны нужны. Вот я и реализовываю это сейчас. А также вскорости выпускаю сайт посвященной этой проблеме.
Скажем так, я больше организатор и маркетолог (с многолетним опытом) в одном лице, который пару лет назад сел за компьютер с целью создать себе, то что отвечало бы моим интересамsmile))
Есть у меня куча замечательной литературы могу иногда присылать материалы отсканированные.
Отдельный разговор про совместную работу баз данных и XML.
Поверхностно скажу, что XML данные можно хранить в базе с сохранением структуры, но необходимо приниятие решения с какой степенью детализации.
Мой движок использует смешанную технологию, что , не только по моему мнению. является очень гибким решением.
В общем согласен иногда снабжать материалами, но вопросы нужны четкие и последовательные. Что скажете, господа модераторы?
P.S. Судя по всему немного народу пока сидит на этих технологиях. Иногда задавал вопросы, а ответа не получал. Приходилось ломиться самому, но все вопросы решаются.
PM MAIL   Вверх
Bikutoru
Дата 24.6.2005, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Увлекающийся
**


Профиль
Группа: Участник
Сообщений: 522
Регистрация: 24.5.2005
Где: Москва

Репутация: 1
Всего: 22



Сразу прошу прощения за оффтоп, но очень неймется smile ...
А что такое
Цитата
эффект синергизма



--------------------
Человек, словно в зеркале мир — многолик, 
Он ничтожен — и он же безмерно велик!
Омар Хайям
PM   Вверх
IZ@TOP
Дата 24.6.2005, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 2
Всего: 73



Цитата(yandex)
Эффект синергизма - это интеграция двух или более агентов или сил, действующих так, что их совместный эффект больше, чем сумма индивидуальных эффектов

Добавлено @ 19:01
Хотя что конкретно имел ввиду автор того сообщения я то же понять немогу... хотя это вроде что-то с экономикой связано?


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Opik
Дата 25.6.2005, 09:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: нет
Всего: 55



Вообщем doxml не есть для 5.1 smile нужно юзать обычный DOM
Код

<?php
  $dsn = 'mysql:dbname=test;host=127.0.0.1';
  $user = 'root';
  $password = '';

  try {
     $dbh = new PDO($dsn, $user, $password);
     $sql = 'SELECT * FROM `news` WHERE news_public = :public';
     $sth = $dbh->prepare($sql, array(PDO_ATTR_CURSOR, PDO_CURSOR_FWDONLY));
     $sth->execute(array(':public' => 1));

     $xml  = new DOMDocument('1.0', 'UTF-8');
     $xsl_proc = new XSLTProcessor();
     $xsl  = new DOMDocument;
     $xsl->load('news.xsl');

     $xsl_proc->importStyleSheet($xsl);
     //print_r(get_class_methods($xsl));
     $root = $xml->createElement('news');
     $last = $xml->appendChild($root);

     while($row = $sth->fetch())
     {
          $id = $xml->createElement('item');
          $last2 = $last->appendChild($id);

          $text = $xml->createElement('text', $row['news_text']);
          $hz = $last2->appendChild($text);

          $title = $xml->createElement('title', $row['news_title']);
          $hz = $last2->appendChild($title);

          $author = $xml->createElement('author', $row['news_author_id']);
          $hz = $last2->appendChild($author);

          $date = $xml->createElement('date', $row['news_date']);
          $hz = $last2->appendChild($date);
     }
     print $xsl_proc->transformToXML($xml);
  } catch (PDOException $e) {
     echo 'Connection failed: ' . $e->getMessage();
  }
?>

news.xsl
Код

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output method="html" encoding="UTF-8" indent="no"/>
 <xsl:template match="/">
  <html>
     <head>
        <title>n</title>
     </head>
     <body>
       <xsl:apply-templates select="news" />
     </body>
  </html>
 </xsl:template>
 <xsl:template match="news">
  <xsl:apply-templates/>
 </xsl:template>
 <xsl:template match="item">
  <h1><xsl:value-of select="title"/></h1>
  <h2>by <xsl:value-of select="author"/> - <xsl:value-of select="date"/></h2>
  <hr />
 </xsl:template>
</xsl:stylesheet>


Это сообщение отредактировал(а) Opik - 25.6.2005, 09:31
PM MAIL Skype   Вверх
dm9
Дата 29.9.2005, 17:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


Профиль
Группа: Vingrad developer
Сообщений: 3876
Регистрация: 22.7.2002
Где: Москва

Репутация: 1
Всего: 137



Цитата(Opik @ 22.6.2005, 16:21)
php_domxml.dll поставил, только у тебя там старые функции (по мануалу). а в новой вроде баг есть )


А можно про баг поподробнее? smile

PM MAIL ICQ   Вверх
Opik
Дата 30.1.2006, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: нет
Всего: 55



dm9
Я точно не помню уже.
Если ставить пхп5.1 и юзать дум. - проблем не будет.
PM MAIL Skype   Вверх
dm9
Дата 31.1.2006, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


Профиль
Группа: Vingrad developer
Сообщений: 3876
Регистрация: 22.7.2002
Где: Москва

Репутация: 1
Всего: 137



Opik, уже три сайта работают на DOMXML, пока проблем не было smile

Нет, вру, была одна. Некорректная отработка <xsl:copy-of> была, для текстовых нод. Но это мелочи, жить можно.

PM MAIL ICQ   Вверх
Alx
Дата 16.4.2007, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ajaxy
****


Профиль
Группа: Комодератор
Сообщений: 2903
Регистрация: 26.11.2003
Где: Cutopia

Репутация: нет
Всего: 78



что-то я ничего не понимаю! что нужно сделать, чтобы начать работать с xml? какие-то расширения скачать? можно в двух словах, по русски, плиз..
и как сделать, чтобы работало и в 4 и в 5 версиях?..


--------------------
PM MAIL WWW ICQ   Вверх
Alx
Дата 16.4.2007, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ajaxy
****


Профиль
Группа: Комодератор
Сообщений: 2903
Регистрация: 26.11.2003
Где: Cutopia

Репутация: нет
Всего: 78



у меня дома денвер с PHP 4.4.4, на хостинге - PHP 5.2, что делать-то?

Добавлено через 2 минуты и 2 секунды
Цитата(Alx @  16.4.2007,  15:45 Найти цитируемый пост)
и как сделать, чтобы работало и в 4 и в 5 версиях?.. 

копать в сторону PECL.. только ребята из php очень не советуют этого делать, говорят всем переходить на DOM (php5).. а какое примерно процентое соотношение php4 и php5 на современных хостингах стоит? я хочу сказать, можно ли забивать на php4 совсем?


--------------------
PM MAIL WWW ICQ   Вверх
sergejzr
Дата 16.4.2007, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: нет
Всего: 360



Чтобы начать работать, нужно понять каки всё это работает. Софт практически не нужен. Главное чтобы сервер выдавал ХМЛ, а как он это делает, через ДОМ, шаблон или просто print - пофиг.


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Alx
Дата 16.4.2007, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ajaxy
****


Профиль
Группа: Комодератор
Сообщений: 2903
Регистрация: 26.11.2003
Где: Cutopia

Репутация: нет
Всего: 78



как я понимаю, поддержка xslt ни в domxml ни в dom не присутсвует? :(

Добавлено через 3 минуты и 22 секунды
Цитата(sergejzr @  16.4.2007,  16:14 Найти цитируемый пост)
Чтобы начать работать, нужно понять каки всё это работает. Софт практически не нужен. Главное чтобы сервер выдавал ХМЛ, а как он это делает, через ДОМ, шаблон или просто print - пофиг. 

мне нужно (по крайней мере сейчас):

- загрзузить xml-файл
- применить к нему xslt-форматирование
- вывести xhtml

например так:

Код

<html>
<head>
<title>HTML + XML (server-side (PHP) parsing)</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>
<body>
<b>here comes the result of works.xml & sheet.xsl generated code</b>
<?
// xml + xslt => xhtml
?>
</body>
</html>

....


--------------------
PM MAIL WWW ICQ   Вверх
-=Ustas=-
Дата 18.4.2007, 22:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: 1
Всего: 69



Цитата(Alx @  16.4.2007,  16:08 Найти цитируемый пост)
у меня дома денвер с PHP 4.4.4, на хостинге - PHP 5.2, что делать-то?

Самый лучший вариант, это поставить дома нормальный сервак, т.е. апач+php5.2.1 ну и что еще надо MySQL ли PostgreSQL.


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
Alx
Дата 20.4.2007, 00:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ajaxy
****


Профиль
Группа: Комодератор
Сообщений: 2903
Регистрация: 26.11.2003
Где: Cutopia

Репутация: нет
Всего: 78



в общем так. поставил на свой денвер php5. скачал с сайта denwer.ru
устанавливаешь, больше ничего делать не надо, все уже включено.
пошёл на php.net, нашел DOM, SimpleXML и XSLTProcessor.
последние два вывели мне helloworld:

Цитата(Alx @  16.4.2007,  16:14 Найти цитируемый пост)
мне нужно (по крайней мере сейчас):

- загрзузить xml-файл
- применить к нему xslt-форматирование
- вывести xhtml


Код

$xml = simplexml_load_file('tree.xml');
$xsl = simplexml_load_file('sheet.xsl');

$xslt = new XSLTProcessor(); // объект для XSL-преобразований
$xslt->importStyleSheet($xsl); // ему нужна xsl-таблица...

echo $xslt->transformToXML($xml); // ... и xml-древо


http://alx.vingrad.ru/dev/xml/php5

только вопрос. почему на выходе кодировка UTF-8?
в encoding обоих XML-файлов прописана windows-1251..


Это сообщение отредактировал(а) Alx - 20.4.2007, 00:30


--------------------
PM MAIL WWW ICQ   Вверх
-=Ustas=-
Дата 20.4.2007, 09:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: 1
Всего: 69



Ну все правильно, SimpleXML всегда приводит к юникоду. Точно не помню, можно или нет, но ссудя по всему нужно через iconv() прогонять.


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
dm9
Дата 20.4.2007, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


Профиль
Группа: Vingrad developer
Сообщений: 3876
Регистрация: 22.7.2002
Где: Москва

Репутация: 1
Всего: 137



Цитата(Alx @  20.4.2007,  01:29 Найти цитируемый пост)
только вопрос. почему на выходе кодировка UTF-8?в encoding обоих XML-файлов прописана windows-1251..


Намёк: <xsl:output...>

PM MAIL ICQ   Вверх
Alx
Дата 20.4.2007, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ajaxy
****


Профиль
Группа: Комодератор
Сообщений: 2903
Регистрация: 26.11.2003
Где: Cutopia

Репутация: нет
Всего: 78



dm9
о, благодарю тебя, друг мой! smile

Добавлено через 2 минуты и 16 секунд
а что, если я просто с xml-файлом работаю? без xslt.. все равно глюки с кодировкой..


--------------------
PM MAIL WWW ICQ   Вверх
check
Дата 5.5.2007, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 610
Регистрация: 3.4.2006

Репутация: 1
Всего: 23



У меня вот такой вопрос возник... Почему лучше и правильнее(если это действительно лучше и правильнее) генерить XML средствами DOM(ну или SimpleXML,  кому что больше нравится),   вместо того чтобы формировать его как строку.   

С парсингом всё понятно,   а вот с генерацией  -  тут преимущества DOM для меня неочевидны.  Точнее говоря я не вижу их вообще.
 
Я в данный момент пишу для себя движок,  в котором шаблонная часть 
будет реализована с помощью XML-XSLT. 
Так вот сейчас XML у меня генерится следующим образом
Код

    $news = $dm->SelectNews(); //достаём то что нужно из БД 
    for ($i=0; $i < count($news); $i++) {
        $news[$i] = "<article id=\"".$news[$i]['id']."\">\n".
        "<date>".$news[$i]['date']."</date>\n".
        "<title>".$news[$i]['title']."</title>\n".
        "<visits>".$news[$i]['visits']."</visits>\n".
         "<comment>".$news[$i]['comment']."</comment>\n".
         "</article>\n";
    }
    $xml = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<news>\n".
    implode("", $news)."</news>";


Дальше уже работаю с ним через DOM: достаю нужный xsl-шаблон,
выполняю преобразование, вывожу результат.
Код

    $domxml = new domDocument();
    $domxml->loadXML($xml);
        $xsl = file_get_contents("../xml/news.xsl");
    $domxsl = new domDocument();
    $domxsl->loadXML($xsl);
    $xsl = new xsltProcessor();
    $xsl->importStylesheet($domxsl);
    echo $xsl->transformtoXML($domxml);  


Вот мне и интересно,  если я переделаю генерацию xml-я средствами DOM,  какие выгоды это мне даст?
Ну кроме того,  что код будет более чистым, поскольку в PHP-коде не будет вообще никаких тэгов, не только ХэТэМээЛьных, но даже и ИксЭмЭльных.  А ради этого, вобщем, весь сыр-бор и городится  smile 
По мере изложения вопроса, сам же начал на него отвечать...
Но всё-таки - что ещё?   Почему это не надо делать так, как у меня сейчас сделано?
А как, например , с производительностью?
Я почти уверен,  что генерация DOM-ом работает медленнее.  Или нет?  
PM MAIL   Вверх
dm9
Дата 7.5.2007, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дмитрий Копытин
****


Профиль
Группа: Vingrad developer
Сообщений: 3876
Регистрация: 22.7.2002
Где: Москва

Репутация: 1
Всего: 137



check, производительность - ХЗ, надо думать, а лучше пробовать.

А вот насчёт корректности кода - когда ты генерируешь XML строкой, ты имеешь шанс нарваться на какую-то ошибку в формировании этой строки. Например, пропустишь закрытие тэга. И обнаружишь это отнюдь не сразу - а (по закону подлости) тогда, когда проект будет находиться в эксплуатации. А в процессе тестирования ты просто не войдёшь в тот 'if', который содержит ошибочный код.

PM MAIL ICQ   Вверх
Страницы: (3) [Все] 1 2 3 
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: X технологии | Следующая тема »


 




[ Время генерации скрипта: 0.1555 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.