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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> где ошибка?? 
:(
    Опции темы
Wanderer2019
  Дата 23.6.2005, 17:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



файл temp.php
Код

<?php
$news = array();

$xml = join('',file('temp.xml'));
$xml = xmldoc($xml);

$xml->xpath_init();

$ctx = xpath_new_context($xml);

$nodes = xpath_eval($ctx,'//news');

foreach($nodes->nodeset as $node)
{
    $currentNews = array();
    $currentNews[0] = $node->get_attribute('date');
    $content = $node->children();
    foreach($content as $contentNode)
    {
        if (($contentNode->type==XML_ELEMENT_NODE)&&
            (in_array($contentNode->name,array('title','text')))){
            $currentNews[$contentNode->name] = $contentNode->content;
        }
    };
};
print_r($news);
?>
<html>
<head>
    <title>Новости</title>
</head>
<body>
<table width="100%" border="1">
<?php
foreach($news as $n)
{
?>
<tr>
    <td width="90%"><b><?php echo $n['title']; ?></b></td>
    <td><?php echo $n['date']; ?></td>
</tr>
<tr>
    <td colspan="2"><?php echo $n['text']; ?><br><br></td>
</tr>
<?php
};
?>
</table>
</body>
</html>    

файл temp.xml, из той же дериктории что и temp.php
Код

<?xml version="1.0"?>
<newsLine>
    <news date="1.1.2002">
        <title>title 1</title>
        <text>news text 1</text>
    </news>
    <news date="5.1.2002">
        <title>title 2</title>
        <text>news text 2</text>
    </news>
    <news date="10.1.2002">
        <title>title 3</title>
        <text>news text 3</text>
    </news>
</newsLine>


не читаются даже $contentNode->name и $contentNode->content ... в любой момент цикла они пустые, а вот дата читается...
где проблема??? подскажите plz...

PM ICQ MSN   Вверх
IZ@TOP
Дата 24.6.2005, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Wanderer2019, зачем такой изврат? Есть решение проще http://forum.vingrad.ru/index.php?showtopi...ndpost&p=449139, используй XML + XSL.


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

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


Опытный
**


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

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



Почитал указанную ветку... не уверен, что понял. Не мог бы ты немного поподробней изложить хотя бы общую концепцию связки XML+XSL??? т.е. предложение вообще не использовать PHP???? читать XML средствами шаблонов XSL???????
Добавлено @ 22:36
вот немного начал писать... получилось.. но гиморно... т.е. реализовал только работу с идеальными таблицами... причем сделал только проверку цвета, фона, на bold, размер шрифта, и шрифт... а сколько ж там еще то!!!!
Добавлено @ 22:36
ах да вот код:
Код

<?
$dom1 = domxml_open_file("test1.xml");

$context = xpath_new_context($dom1);

$result = xpath_eval($context, "//Worksheet/Table/Row");
$styles = xpath_eval($context, "//Styles/Style");
$thisStyle[][]=array();
foreach($styles->nodeset as $style){
    if($style->node_name()=='Style')
        $styleId=$style->get_attribute('ID');
    $items=$style->children();
    foreach($items as $item){
        if ($item->type==XML_ELEMENT_NODE)
            if($item->node_name()=='Font'){
                if($item->get_attribute('FontName')!=null)
                     $thisStyle[$styleId]['FontName']=$item->get_attribute('FontName');
                else
                     $thisStyle[$styleId]['FontName']="Veranda";
                if($item->get_attribute('Color')!=null)
                     $thisStyle[$styleId]['Color']=$item->get_attribute('Color');
                else
                     $thisStyle[$styleId]['Color']="Black";
                if($item->get_attribute('Size')!=null)
                     $thisStyle[$styleId]['Size']=$item->get_attribute('Size')/3;
                else
                     $thisStyle[$styleId]['Size']="3";
                if($item->get_attribute('Bold')!=null){
                    if($item->get_attribute('Bold')==1)
                        $thisStyle[$styleId]['Bold']="<b>";    
                }
                else
                     $thisStyle[$styleId]['Bold']="";
            }
            if($item->node_name()=='Interior'){
                if($item->get_attribute('Color')!=null)
                    $thisStyle[$styleId]['InteriorColor']=$item->get_attribute('Color');
                else 
                    $thisStyle[$styleId]['InteriorColor']='#FFFFFF';
            }
        }
    }
print "<table border=0 cellspacing='3' cellpadding='0' width='100%'>";
foreach($result->nodeset as $node){
    print "<tr>";
    $content=$node->children();
    foreach($content as $contentNode){
        if ($contentNode->type==XML_ELEMENT_NODE){
            $id=$contentNode->get_attribute('StyleID');
            if($thisStyle[$id]['Bold']=="<b>"){
                $startSpacer="<b>";
                $endSpacer="</b>";
            }
            else{
                $startSpacer="";
                $endSpacer="";
            }
            if($id!=null){
                print "<td bgcolor=".$thisStyle[$id]['InteriorColor'].">";
                print "<font face='".$thisStyle[$id]['FontName']."' color='".$thisStyle[$id]['Color']."' size='".$thisStyle[$id]['Size']."'>".$startSpacer.iconv("UTF-8","windows-1251",$contentNode->get_content()).$endSpacer."</font>";
                print "</td>";
                $id=null;
            }
            else{
                $id='Default';
                print "<td bgcolor=".$thisStyle[$id]['InteriorColor'].">";
                print "<font face='".$thisStyle[$id]['FontName']."' color='".$thisStyle[$id]['Color']."' size='".$thisStyle[$id]['Size']."'>".iconv("UTF-8","windows-1251",$contentNode->get_content())."</font>";
                print "</td>";
                $id=null;
            }
        }
    }
    print "</tr>";
}
print "</table>";
?>

PM ICQ MSN   Вверх
IZ@TOP
Дата 25.6.2005, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Суть в том, что тебе нужно генерировать только XML и написать несколько шаблонов xsl, которые будут обрабатывать эти данные, ничего связанного с тем чтобы строить сам HTML в РНР быть не должно.


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

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


Опытный
**


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

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



ну исходя из примеров в параллельной ветке не совсем понимаю смысл... судя по названиям тэгов там те же циклы и те жи переменные... в чем же смысл??? вроде на пхп это написать попроще будет... smile
PM ICQ MSN   Вверх
IZ@TOP
Дата 26.6.2005, 00:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Wanderer2019, ну если идти путем XML технологий, то думаю что на XSL все же надо делать. А проще на РНР это может и так, но удобней несомненно будет делать на XSL.


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

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

Внимание: данный раздел предназначен для решения сложных, нестандартных задач.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Для профи | Следующая тема »


 




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


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

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