Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Не получается модифицировать код HTML XML
 
 автор: coloboc66   (17.08.2006 в 14:34)   письмо автору
 
 

Вот нашел в сети подходящий мне образец кода. Но надо мне его модифицировать таким образом, чтобы в первой ячейке каждой строки таблицы html-документа выводился не текст, а соответствующий рисунок. Но как это сделать, не могу сообразить. Слишком уж новая для меня эта тема: XML
Файл emperors.xml

<?xml version="1.0" encoding="iso-8859-1"?>
<root> 
- <emperors>
- <emperor>
  <name>Augustus</name> 
  <rule>23-67</rule> 
  <death>Peaceful</death> 
  </emperor>
- <emperor>
  <name>Tiberius</name> 
  <rule>14-37</rule> 
  <death>Murdered by his great-nephew and the commander of his bodyguard</death> 
  </emperor>
- <emperor>
  <name>Caligula</name> 
  <rule>37-41</rule> 
  <death>Murdered by the commander of his bodyguard (a different one than the one before)</death> 
  </emperor>
- <emperor>
  <name>Claudius</name> 
  <rule>41-54</rule> 
  <death>Poisoned by his fourth wife</death> 
  </emperor>
- <emperor>
  <name>Nero</name> 
  <rule>54-68</rule> 
  <death>Suicide after losing the Empire</death> 
  </emperor>
  </emperors>
</root>

В HTML-документе выводятся данные из XML-документа:

function createTable(){ 
    var x = xmlDoc.getElementsByTagName('emperor'); 
     
    var newEl = document.createElement('TABLE');//  создать табл
newEl.border = 1;
    newEl.setAttribute('cellPadding',5); //?
    var tmp = document.createElement('TBODY'); 
    newEl.appendChild(tmp); 
    var row = document.createElement('TR'); //создать верхнюю строку
    for (j=0;j<x[0].childNodes.length;j++){ 
        if (x[0].childNodes[j].nodeType != 1) continue; 
        var container = document.createElement('TH');// создать заголовок табл
        var theData = document.createTextNode(x[0].childNodes[j].nodeName); 
        container.appendChild(theData); 
        row.appendChild(container); 
    } 
    tmp.appendChild(row); //добавить верхнюю строку с заголовком
    for (i=0;i<x.length;i++){ 
        var row = document.createElement('TR');
        for (j=0;j<x[i].childNodes.length;j++){ 
            if (x[i].childNodes[j].nodeType != 1) continue; 
            var container = document.createElement('TD'); 
            var theData = document.createTextNode(x[i].childNodes[j].firstChild.nodeValue); 
            container.appendChild(theData); 
            row.appendChild(container); 
        } 
        tmp.appendChild(row);//добавить строки с содержимым 
    } 
    document.getElementById('writeroot').appendChild(newEl);//добавить табл в док-т 

Если кто-то сможет помочь, заранее благодарю.

   
 
 автор: 12345   (17.08.2006 в 18:47)   письмо автору
 
   для: coloboc66   (17.08.2006 в 14:34)
 

Назвать рисунок как <name><img src=... /></name> и выводить. Вообще, там XSLT как-то применяют при выводе.

   
 
 автор: RMW   (17.08.2006 в 19:40)   письмо автору
 
   для: coloboc66   (17.08.2006 в 14:34)
 

Вот накатал некий пример.
Насколько понимаю в xml может содержаться
только текст, значит мы можем хранить в нём
только путь к рисунку.
В общем вот что у меня получилось:)
файл test.xml

<?xml version="1.0" encoding="windows-1251"?>
<root>
  <aaa>Просто текст</aaa>
  <image>Risunok.jpg</image>
  <bbb>Тоже текст</bbb>
</root>

файл htm

<html>
<head>
<title>IE 6 only</title>
<script>
function LoadXML()

  //Создание объекта
  var xmlDoc = new ActiveXObject('Microsoft.XMLDOM');

  //Функция роверки состояния
  xmlDoc.onreadystatechange = function()
  {
    //Если инициализация объекта завершена вызываем parseXML()
    if(xmlDoc.readyState=='4')ParseXML(xmlDoc);
  }

  //Инициализация
  xmlDoc.load('test.xml');
}

function ParseXML(xmlDoc)
{
  //Получаем корневой элемент (узел)
  var myRootNode = xmlDoc.documentElement;

  //Создаём таблицу и присваиваем атрибуты
  var myTable = document.createElement('TABLE');
  myTable.setAttribute('border','1');
  myTable.setAttribute('cellSpacing','1');
  myTable.setAttribute('cellPadding','1');
  myTable.setAttribute('bgColor','#ddaadd');

  //Создаём строку в таблице
  var myRow = document.createElement('TR');

  //Цикл по вложенным элементам (коллекция childNodes)
  for(var i=0;i<myRootNode.childNodes.length;i++)
  {
    //Получаем текстовое значение узла
    var myXMLText = myRootNode.childNodes[i].text;

    //Создаём столбец
    var myCell = document.createElement('TD');

    //Если текст находится в теге <image> создаём картинку
    if(myRootNode.childNodes[i].tagName == 'image')
    {
      var myImg = document.createElement('IMG');
      myImg.setAttribute('alt','это альт');
      //Присваиваем src - строка из xml файла
      myImg.setAttribute('src',myXMLText);

      //Помещаем картинку в столбец
      myCell.appendChild(myImg);
    }
    else
    {
      //Создаём текстовый узел для помещения в столбец
      var myTextNode = document.createTextNode(myXMLText);

      //Помещаем текст в столбец
      myCell.appendChild(myTextNode);
    }

    //Помещаем столбец в строку
    myRow.appendChild(myCell);
  }
  //Вначале строку добавим в tbody - "тело таблицы".
  var tmp = document.createElement('TBODY');
  tmp.appendChild(myRow);

  //Добавляем строку в таблицу
  myTable.appendChild(tmp);

  //И наконец таблицу помещаем в документ
  document.body.appendChild(myTable);
}

</script>
</head>
<body onload="LoadXML()">
</body>
</html>

   
 
 автор: 12345   (17.08.2006 в 20:23)   письмо автору
 
   для: RMW   (17.08.2006 в 19:40)
 

Зачем усложнять? В XML могут быть любые атрибуты тегов, поэтому тег IMG полностью подходит под формат, ка и любой другой валидный элемент.

   
 
 автор: RMW   (17.08.2006 в 21:47)   письмо автору
 
   для: 12345   (17.08.2006 в 20:23)
 

XML вижу второй раз :)
и вообще ничего не знаю,
представляю себе просто текстовый файл
в котором линейный текст структурирован с помощью тегов и всё.
И зачем это надо не знаю:)
А пример мыслился как простая и по-возможности понятная
демонстрация обхода дерева объектов с использованием двух-трёх
знакомых (с позавчера) методов:) Возможно он кому-нибудь окажется полезным.
А как можно тег xml перевести в html?
Допустим есть такое дело:

<?xml version="1.0" encoding="windows-1251"?>
<root>
  <name><img src="myImage.gif" alt="рисунок" width="100" height="100" /></name>
  <img src="ris2.gif" />
</root>

Прочитать имена и свойства атрибутов можно, но это просто текст
и чё делать дальше.
(Хотя для меня вопрос больше гипотетический, но тема сама по себе интересная.)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования