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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> изменение значений атрибутов 
:(
    Опции темы
check
Дата 24.4.2007, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Имеется такой шаблон в формате xml
Код

<menu>
<table cellspacing="0" cellpadding="4" width="100%">
<tr height="25">
<td background="./backgrounds/fon3.gif" align="left" width="20%"><a href=""><img id="0"  border="0" src="1.gif" /></a></td>
<td background="./backgrounds/fon3.gif" align="left" width="20%"><a href=""><img id="1"  border="0" src="2.gif" /></a></td>
<td background="./backgrounds/fon3.gif" align="left" width="20%"><a href=""><img id="2"  border="0" src="3.gif" /></a></td>
<td background="./backgrounds/fon3.gif" align="left" width="20%"><a href=""><img id="3"  border="0" src="4.gif" /></a></td>
<td background="./backgrounds/fon3.gif" align="left" width="20%"><a href=""><img id="4"  border="0" src="5.gif" /></a></td>
</tr>
</table>
</menu>



Хочу сделать функцию, которая бы изменяла значение атрибута src тега img с определённым id.
Поскольку у тега есть атрибут id, было бы логичным обращаться к нему так
Код

$img = $document->getElementById($id);


Ну допустим обратился, а как быть дальше?
По идее нужно применить replaceAttribute,  но ни один из методов работы с атрибутами к $img применить не получается:
Код

Call to a member function getAttribute() on a non-object

Парсить xml начиная с корневого тега не хотелось бы...

echo $img  ничего не выводит,  хотя наверное должно было бы вывести что-то вроде object.

Это сообщение отредактировал(а) check - 25.4.2007, 09:15
PM MAIL   Вверх
check
Дата 24.4.2007, 22:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Дерево xml-документа я получаю так
Код

define('XMLHead', "<?xml version=\"1.0\" encoding=\"Windows-1251\" ?>");
$document = new domDocument("Windows-1251");
$menu = file_get_contents("../templates/top_menu.html"); //это тот самый xml
$menu_doc = XMLHead . $menu;
$document->loadXML($menu_doc);

PM MAIL   Вверх
check
Дата 28.4.2007, 18:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Как я выяснил, для того чтобы использовать метод getElementById  нужно
описать атрибут id  в DTD как уникальный идентификатор.
Сделать это не трудно,  но в таком случае доступ по id никаких удобств мне не даёт.

Поэтому я  делаю так
Код

function replaceAttribute($id, $replace) {
    global $document;
    $img = $document->getElementsByTagName("img");
    for ($i=0; $i < $img->length; $i++) {
        $ob = $img->item($i);
        $attributes = $ob->attributes;
        if ($attributes->getNamedItem("id")->nodeValue == $id) {
            $new_attr = $ob->setAttribute("src", $replace);
             
        }
    }
}

Как мне теперь сохранить внесённое измненение,  то есть перезаписать 
шаблон изменённым xml-ем?  Ну и как вообще увидеть это изменение?
Если добавить в функцию такой код
Код

$new_attr = $ob->setAttribute("src", $replace);
$ob->appendChild($new_attr);
$new_doc = $document->saveXML();
echo $new_doc;


То он выведет меню в том же виде что и прежде.


P.S. В общем как вы поняли,  я хочу сделать визуальное редактирование шаблонов через DOM. 


Это сообщение отредактировал(а) check - 28.4.2007, 18:22
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: X технологии | Следующая тема »


 




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


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

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